社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python列表常见操作技巧汇总

生信修炼手册 • 3 年前 • 433 次点击  

欢迎关注”生信修炼手册”!

python的一大特点就是语法简洁,代码量少,除了内置函数和模块赋予的强大功能外,其丰富的语法糖也是减少代码量的关键,本文针对list这一数据结构,汇总了常见的操作技巧

1. 遍历列表

遍历指的是循环处理列表中的每一个元素,最基本的遍历方法就是for in循环了,用法如下

a = [1, 2, 3, 4, 5]
for i in a:
print(i)

另外,针对两种特殊的遍历场景,python还提供了简洁的处理方法,场景1,同时遍历下标和对应的元素。在其他语言中,解决思路是通过遍历下标,再通过下标获取对应的值,在python中,通过enumerate函数可以轻松实现同时获取下标和对应的值,用法如下

for i, v in enumerate(a):
print(i, v)

场景2,同时遍历两个list,  在其他语言中同样也是通过遍历下标来实现,在python中通过zip函数实现,代码量更少,用法如下

a = [1, 2, 3]
b = [4, 5, 6]
for x, y in zip(a, b):
print(x, y)

2. 列表的生成

对于列表元素的遍历,一个经典的使用场景是遍历一个列表,对每个元素稍加处理,结果另存为一个新的列表,你可能会写出如下代码

new =[ ]
for i in old:
new.append(i + 1)

对于上述场景,python中有更加简洁的实现方式,第一种方法称之为列表生成式,最基本的用法如下

>>> a = [1, 2, 3, 4, 5]
>>> b = [i ** 2 for i in a]
>>> b
[1, 4, 9, 16, 25]

上述代码遍历列表a, 求每个元素的乘方,将结果存为列表b, 可以看到,一行代码就可以搞定。列表生成式还可以更加强大,比如添加过滤条件,用法如下

>>> a = [1, 2, 3, 4, 5]
>>> b = [i ** 2 for i in a if i % 2 == 0]
>>> b
[4, 16]

上述代码同样是遍历列表a, 但是只筛选其中的偶数项来处理。列表生成式还可以在生成结果时添加简单的逻辑判断, 用法如下

>>> a = [1, 2, 3, 4, 5]
>>> b = [i ** 2 if i % 2 == 0 else i ** 3 for i in a]
>>> b
[1, 4, 27, 16, 125]

列表生成式支持多层for循环, 用法如下

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = [m * n for m in a for n in b]
>>> c
[4, 5, 6, 8, 10, 12, 12, 15, 18]

列表生成式可以嵌套,用法如下

>>> c = [[m * n  for m in a]for n in b]
>>> c
[[4, 8, 12], [5, 10, 15], [6, 12, 18]]

对于简单的循环加逻辑判断,用代码生成式是最佳选择。

3. 解列表

将列表中的元素赋值给各个变量,称之为解列表,基本用法如下




    
>>> a, b, c, d = [1, 2, 3, 4]

上述代码将列表中的元素依次赋值给4个变量,可以看到,这种写法在处理个数较少的列表是比较适用,如果我们只想要其中的某几个值,可以用双下划线__作为变量名,对应的值就会被丢弃,用法如下

a, __, __, d = [1, 2, 3, 4]

在此基础上,还有一种进阶用法,称为星号解压缩,基本用法如下

a, *__, d = [1, 2, 3, 4]

星号起到了通配符的作用,可以匹配任意个元素,上述代码中的星号匹配中间的2个变量。

当然,对于列表的操作技巧远不止这几种,这里列出的几种比较基础,掌握起来比较轻松。

·end·

—如果喜欢,快分享给你的朋友们吧—



原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!
本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。
  更多精彩



  写在最后


转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。


扫描下方二维码,关注我们,解锁更多精彩内容!


一个只分享干货的

生信公众号


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/62451
 
433 次点击