分享

python列表常见操作技巧汇总

 生信修炼手册 2020-05-01

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·

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多