• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    教学以及管理操作教程

    教学以及管理操作教程

    ¥1,000.00 ¥100.00
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      教学以及管理操作教程

      教学以及管理操作教程

      ¥1,000.00 ¥100.00
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      老俊俊的生信笔记

      • 首页
      • 博客
      • 老俊俊的生信笔记
      • python 学习之列表

      python 学习之列表

      • 发布者 weinfoadmin
      • 分类 老俊俊的生信笔记
      • 日期 2021年12月11日
      测试开头

      1感言

      允许一切发生,就会更平和与宽容,更容易和自己和解。

      –来自杨小姐最近很喜欢的话

      我们好像什么都做不了,我们又好像什么都可以去做。

      –老俊俊的俊言俊语

      2引言

      列表 由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字 0 ~ 9 或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。

      在 Python 中,用方括号( [] )表示列表,并用 逗号 分隔其中的元素。

      bicycles = ['trek', 'cannondale', 'redline', 'specialized']
      print(bicycles)

      ['trek', 'cannondale', 'redline', 'specialized']

      3列表基础

      访问列表元素

      要访问列表的任意元素,只需将该元素的位置(索引 )告诉 Python 即可,当你请求获取列表元素时,Python 只返回该元素,而不包括方括号:

      bicycles = ['trek', 'cannondale', 'redline', 'specialized']
      print(bicycles[0])

      trek

      当你请求获取列表元素时,Python 只返回该元素,而不包括方括号:

      bicycles = ['trek', 'cannondale', 'redline', 'specialized']
      print(bicycles[0].title())

      Trek

      索引从 0 而不是 1 开始

      在 Python 中,第一个列表元素的索引为 0,而不是 1,第二个列表元素的索引为 1。根据这种简单的计数方式,要访问列表的任何元素,都可将其位置减 1,并将结果作为索引。例如,要访问第四个列表元素,可使用索引 3:

      bicycles = ['trek', 'cannondale', 'redline', 'specialized']
      print(bicycles[1])
      print(bicycles[3])

      cannondale
      specialized

      Python 为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1 ,可让 Python 返回最后一个列表元素,索引-2 返回倒数第二个列表元素,索引-3 返回倒数第三个列表元素,依此类推:

      bicycles = ['trek', 'cannondale', 'redline', 'specialized']
      print(bicycles[-1])

      specialized

      使用列表中的各个值

      可以像使用其他变量一样使用列表中的各个值。例如,可以使用 f 字符串根据列表中的值来创建消息:

      bicycles = ['trek', 'cannondale', 'redline', 'specialized']
      message = f"My first bicycle was a {bicycles[0].title()}."

      print(message)

      My first bicycle was a Trek.

      4修改、添加和删除元素

      修改列表元素

      修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值:

      motorcycles = ['honda', 'yamaha', 'suzuki']
      print(motorcycles)

      motorcycles[0] = 'ducati'
      print(motorcycles)

      ['honda', 'yamaha', 'suzuki']
      ['ducati', 'yamaha', 'suzuki']

      在列表中添加元素

      在列表末尾添加元素:

      在列表中添加新元素时,最简单的方式是将元素附加 (append)到列表。给列表附加元素时,它将添加到列表末尾:

      motorcycles = ['honda', 'yamaha', 'suzuki']
      print(motorcycles)

      motorcycles.append('ducati')
      print(motorcycles)

      ['honda', 'yamaha', 'suzuki']
      ['honda', 'yamaha', 'suzuki', 'ducati']

      方法 append() 让动态地创建列表易如反掌。例如,你可以先创建一个空列表,再使用一系列函数调用 append() 来添加元素。下面来创建一个空列表,再在其中添加元素’honda’ 、’yamaha’ 和’suzuki’ :

      motorcycles = []

      motorcycles.append('honda')
      motorcycles.append('yamaha')
      motorcycles.append('suzuki')

      print(motorcycles)

      ['honda', 'yamaha', 'suzuki']

      在列表中插入元素:

      使用方法 insert() 可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值:

      motorcycles = ['honda', 'yamaha', 'suzuki']

      motorcycles.insert(0, 'ducati')
      print(motorcycles)

      ['ducati', 'honda', 'yamaha', 'suzuki']

      从列表中删除元素:

      如果知道要删除的元素在列表中的位置,可使用 del 语句:

      motorcycles = ['honda', 'yamaha', 'suzuki']
      print(motorcycles)

      del motorcycles[0]
      print(motorcycles)

      ['honda', 'yamaha', 'suzuki']
      ['yamaha', 'suzuki']

      使用 del 可删除任意位置处的列表元素,条件是知道其索引。例如,下面演示了如何删除前述列表中的第二个元素 ‘yamaha’ :

      motorcycles = ['honda', 'yamaha', 'suzuki']
      print(motorcycles)

      del motorcycles[1]
      print(motorcycles)

      ['honda', 'yamaha', 'suzuki']
      ['honda', 'suzuki']

      方法 pop() 删除列表末尾的元素,并让你能够接着使用它:

      motorcycles = ['honda', 'yamaha', 'suzuki']
      print(motorcycles)

      popped_motorcycle = motorcycles.pop()
      print(motorcycles)
      print(popped_motorcycle)

      ['honda', 'yamaha', 'suzuki']
      ['honda', 'yamaha']
      suzuki

      实际上,可以使用 pop() 来删除列表中任意位置的元素,只需在圆括号中指定要删除元素的索引即可:

      motorcycles = ['honda', 'yamaha', 'suzuki']

      first_owned = motorcycles.pop(0)
      print(f"The first motorcycle I owned was a {first_owned.title()}.")

      The first motorcycle I owned was a Honda.

      有时候,你不知道要从列表中删除的值所处的位置。如果只知道要删除的元素的值,可使用方法 remove() :

      motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
      print(motorcycles)

      motorcycles.remove('ducati')
      print(motorcycles)

      ['honda', 'yamaha', 'suzuki', 'ducati']
      ['honda', 'yamaha', 'suzuki']

      注意: 方法 remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来确保将每个值都删除。

      5组织列表

      有时候,你希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。Python 提供了很多组织列表的方式,可根据具体情况选用。

      sort() 对列表永久排序

      Python 方法 sort() 让你能够较为轻松地对列表进行排序:

      cars = ['bmw', 'audi', 'toyota', 'subaru']
      cars.sort()
      print(cars)

      ['audi', 'bmw', 'subaru', 'toyota']

      还可以按与字母顺序相反的顺序排列列表元素,只需向 sort() 方法传递参数 reverse=True 即可:

      cars = ['bmw', 'audi', 'toyota', 'subaru']
      cars.sort(reverse=True)
      print(cars)

      ['toyota', 'subaru', 'bmw', 'audi']

      使用函数 sorted() 对列表临时排序

      要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数 sorted() 。函数 sorted() 让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序:

      cars = ['bmw', 'audi', 'toyota', 'subaru']

      print("Here is the original list:")
      print(cars)

      print("nHere is the sorted list:")
      print(sorted(cars))

      print("nHere is the original list again:")
      print(cars)

      Here is the original list:
      ['bmw', 'audi', 'toyota', 'subaru']

      Here is the sorted list:
      ['audi', 'bmw', 'subaru', 'toyota']

      Here is the original list again:
      ['bmw', 'audi', 'toyota', 'subaru']

      倒着打印列表

      要反转列表元素的排列顺序,可使用方法 reverse() :

      cars = ['bmw', 'audi', 'toyota', 'subaru']
      print(cars)

      cars.reverse()
      print(cars)

      ['bmw', 'audi', 'toyota', 'subaru']
      ['subaru', 'toyota', 'audi', 'bmw']

      方法 reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,只需对列表再次调用 reverse() 即可。

      确定列表的长度

      使用函数 len() 可快速获悉列表的长度:

      cars = ['bmw', 'audi', 'toyota', 'subaru']
      len(cars)

      4

      6操作列表

      遍历整个列表

      你经常需要遍历列表的所有元素,对每个元素执行相同的操作,通过使用 for 循环 ,可以让 Python 去处理这些问题:

      magicians = ['alice', 'david', 'carolina']
      for magician in magicians:
          print(magician)

      alice
      david
      carolina

      刚开始使用循环时请牢记,对列表中的每个元素,都将执行循环指定的步骤,而不管列表包含多少个元素。如果列表包含一百万个元素,Python 就重复执行指定的步骤一百万次,且通常速度非常快。

      在 for 循环中执行更多操作

      在 for 循环中,可对每个元素执行任何操作:

      magicians = ['alice', 'david', 'carolina']
      for magician in magicians:
          print(f"{magician.title()}, that was a great trick!")

      Alice, that was a great trick!
      David, that was a great trick!
      Carolina, that was a great trick!

      在 for 循环中,想包含多少行代码都可以。在代码行 for magician in magicians 后面,每个缩进的代码行都是循环的一部分,将针对列表中的每个值都执行一次。因此,可对列表中的每个值执行任意次数的操作:

      magicians = ['alice', 'david', 'carolina']
      for magician in magicians:
          print(f"{magician.title()}, that was a great trick!")
          print(f"I can't wait to see your next trick, {magician.title()}.n")

      Alice, that was a great trick!
      I can't wait to see your next trick, Alice.

      David, that was a great trick!
      I can'
      t wait to see your next trick, David.

      Carolina, that was a great trick!
      I can't wait to see your next trick, Carolina.

      在 for 循环结束后执行一些操作

      在 for 循环后面,没有缩进的代码都只执行一次,不会重复执行:

      magicians = ['alice', 'david', 'carolina']
      for magician in magicians:
          print(f"{magician.title()}, that was a great trick!")
          print(f"I can't wait to see your next trick, {magician.title()}.n")

      print("Thank you, everyone. That was a great magic show!")

      Alice, that was a great trick!
      I can't wait to see your next trick, Alice.

      David, that was a great trick!
      I can'
      t wait to see your next trick, David.

      Carolina, that was a great trick!
      I can't wait to see your next trick, Carolina.

      Thank you, everyone. That was a great magic show!

      你在前面看到了,开头两个函数调用 print() 针对列表中的每位魔术师重复执行。然而,第三个函数调用 print() 没有缩进,因此只执行一次。

      因此在写循环时应该尽量 避免缩进错误 或者 不必要的缩进。

      创建数值列表

      创建数值列表:

      Python 函数 range() 让你能够轻松地生成一系列数。例如,可以像下面这样使用函数 range() 来打印一系列数:

      for value in range(1, 5):
          print(value)

      1
      2
      3
      4

      在这个示例中,range() 只打印数 1 ~ 4。这是编程语言中常见的 差一行为 的结果。函数 range() 让 Python 从指定的第一个值开始数,并在到达你指定的第二个值时停止。因为它在第二个值处停止,所以输出不包含该值(这里为 5)。

      要打印数 1 ~ 5,需要使用 range(1,6) 。使用 range() 时,如果输出不符合预期,请尝试将指定的值加 1 或减 1。

      使用 range() 创建数字列表:

      要创建数字列表,可使用函数 list() 将 range() 的结果直接转换为列表。如果将 range() 作为 list() 的参数,输出将是一个数字列表:

      numbers = list(range(1, 6))
      print(numbers)

      [1, 2, 3, 4, 5]

      使用函数 range() 时,还可指定步长。为此,可给这个函数指定第三个参数,Python 将根据这个步长来生成数:

      even_numbers = list(range(2, 11, 2))
      print(even_numbers)

      [2, 4, 6, 8, 10]
      squares = []
      for value in range(1, 11):
          square = value ** 2
          squares.append(square)

      print(squares)

      [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

      对数字列表执行简单的统计计算:

      有几个专门用于处理数字列表的 Python 函数。例如,你可以轻松地找出数字列表的最大值、最小值和总和:

      digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
      min(digits)
      0

      max(digits)
      9

      sum(digits)
      45

      列表解析:

      前面介绍的生成列表 squares 的方式包含三四行代码,而列表解析让你只需编写一行代码就能生成这样的列表。列表解析 将 for 循环和创建新元素的代码合并成一行,并自动附加新元素:

      squares = [value**2 for value in range(1, 11)]
      print(squares)

      [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

      要使用这种语法,首先指定一个描述性的列表名,如 squares 。然后,指定一个左方括号,并定义一个 表达式,用于生成要存储到列表中的值。在这个示例中,表达式为value**2 ,它计算平方值。接下来,编写一个 for 循环,用于给表达式提供值,再加上右方括号。在这个示例中,for 循环为 for value in range(1,11) ,它将值 1 ~ 10 提供给表达式 value**2 。请注意,这里的 for 语句末尾没有冒号。

      使用列表的一部分

      切片:

      要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数 range() 一样,Python 在到达第二个索引之前的元素后停止。要输出列表中的前三个元素,需要指定索引 0 和 3,这将返回索引为 0、1 和 2 的元素:

      players = ['charles', 'martina', 'michael', 'florence', 'eli']
      print(players[0:3])

      ['charles', 'martina', 'michael']

      你可以生成列表的任意子集。例如,如果要提取列表的第二、第三和第四个元素,可将起始索引指定为 1 ,并将终止索引指定为 4:

      players = ['charles', 'martina', 'michael', 'florence', 'eli']
      print(players[1:4])

      ['martina', 'michael', 'florence']

      如果没有指定第一个索引,Python 将自动从列表开头开始:

      players = ['charles', 'martina', 'michael', 'florence', 'eli']
      print(players[:4])

      ['charles', 'martina', 'michael', 'florence']

      要让切片终止于列表末尾,也可使用类似的语法。例如,如果要提取从第三个元素到列表末尾的所有元素,可将起始索引指定为 2 ,并省略终止索引:

      players = ['charles', 'martina', 'michael', 'florence', 'eli']
      print(players[2:])

      ['michael', 'florence', 'eli']

      如果要输出名单上的最后三名队员,可使用切片 players[-3:] :

      players = ['charles', 'martina', 'michael', 'florence', 'eli']
      print(players[-3:])

      ['michael', 'florence', 'eli']

      遍历切片:

      如果要遍历列表的部分元素,可在 for 循环中使用切片:

      players = ['charles', 'martina', 'michael', 'florence', 'eli']

      print("Here are the first three players on my team:")
      for player in players[:3]:
          print(player.title())

      Here are the first three players on my team:
      Charles
      Martina
      Michael

      复制列表:

      要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:] ):

      my_foods = ['pizza', 'falafel', 'carrot cake']
      friend_foods = my_foods[:]

      print("My favorite foods are:")
      print(my_foods)

      print("nMy friend's favorite foods are:")
      print(friend_foods)

      My favorite foods are:
      ['pizza', 'falafel', 'carrot cake']

      My friend's favorite foods are:
      ['
      pizza', 'falafel', 'carrot cake']

      7元组

      有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。Python 将不能修改的值称为不可变的 ,而不可变的列表被称为元组。

      元组看起来很像列表,但使用圆括号而非中括号来标识。定义元组后,就可使用索引来访问其元素,就像访问列表元素一样:

      dimensions = (200, 50)
      print(dimensions[0])
      print(dimensions[1])

      200
      50

      下面来尝试修改元组 dimensions 的一个元素,看看结果如何:

      dimensions = (200, 50)
      dimensions[0] = 250

      ---------------------------------------------------------------------------
      TypeError                                 Traceback (most recent call last)
      <ipython-input-43-258c8b06eee2> in <module>
            1 dimensions = (200, 50)
      ----> 2 dimensions[0] = 250

      TypeError: 'tuple' object does not support item assignment

      注意: 严格地说,元组是由逗号标识的,圆括号只是让元组看起来更整洁、更清晰。如果你要定义只包含一个元素的元组,必须在这个元素后面加上逗号:

      my_t = (3,)

      遍历元组中的所有值

      像列表一样,也可以使用 for 循环来遍历元组中的所有值:

      dimensions = (200, 50)
      for dimension in dimensions:
          print(dimension)

      200
      50

      修改元组变量

      虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:

      dimensions = (200, 50)
      print("Original dimensions:")
      for dimension in dimensions:
          print(dimension)

      dimensions = (400, 100)
      print("nModified dimensions:")
      for dimension in dimensions:
          print(dimension)

      Original dimensions:
      200
      50

      Modified dimensions:
      400
      100


      python 学习之列表


      欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群 哦,数据代码已上传至QQ群,欢迎加入下载。

      群二维码:

      python 学习之列表


      老俊俊微信:


      python 学习之列表

      知识星球:


      python 学习之列表


      所以今天你学习了吗?

      欢迎小伙伴留言评论!

      点击我留言!

      今天的分享就到这里了,敬请期待下一篇!

      最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!

      如果觉得对您帮助很大,赏杯快乐水喝喝吧!




       往期回顾 





      ◀单细胞优质公众号及视频教程!

      ◀python 变量和简单数据类型

      ◀GeneMANIA 下载数据自定义绘制高清网络图

      ◀单细胞轨迹可视化 R 包 — dynplot

      ◀跟着 NC 学画图: GSEA 富集结果可视化

      ◀蛋白互作神器! GeneMANIA

      ◀提取 GSEA 富集结果绘制唯美 GSEA 图

      ◀R 语言小白必看视频!

      ◀pathview 可视化你的基因通路!

      ◀推文系列部分小结

      ◀…

      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      单细胞优质公众号及视频教程!
      2021年12月11日

      下一篇文章

      R语言学习:我录制的R语言学习系列视频,R语言数据科学书籍推荐和下载
      2021年12月13日

      你可能也喜欢

      8-1651542331
      跟着Nature学绘图(2) 箱线图-累积分布曲线图
      2 5月, 2022
      9-1651542322
      Julia 笔记之字符串
      2 5月, 2022
      0-1651542343
      Julia 笔记之数学运算和初等函数
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?