Python的内建序列函数

在python中有许多有用的序列函数,学习python就应当熟悉并且择机使用。

1、enumerate

我们经常需要在遍历一个序列的同时追踪当前元素的索引,由于这种场景很常见,所以python内建了enumerate函数,返回了(i,value)元组的序列,其中value是元素的值,i是元素的索引,当你需要对数据建立索引时,一种有效的模式就是使用enumerate构建一个字典,将序列值(假设是唯一的)映射到索引位置上:

list = ['foo','bar','baz']
mapping = {}
for i ,v in enumerate(list):
    mapping[v] = i

mapping
{'foo': 0, 'bar': 1, 'baz': 2}

2、sorted

sorted函数返回一个根据任意序列中的元素新建的已排序列表:

sorted([7,1,2,6,0,3,2])
[0, 1, 2, 2, 3, 6, 7]

sorted('python')
['h', 'n', 'o', 'p', 't', 'y']

sorted函数接受的参数与列表的sort方法一致。

3、zip

zip将列表、元组或其他序列的元素配对,新建一个元组构成的列表:

seq1 = ['foo','bar','bae']
seq2 = ['A','B','C']
zipped = zip(seq1,seq2)

list(zipped)
[('foo', 'A'), ('bar', 'B'), ('bae', 'C')]

如果第一个列表中的元素类型和第二个列表中的元素类型最好相同。如果第一个列表中是字符串,而第一个列表中是数值,则会出现报错。
zip可以处理任意长度的序列,它生成列表长度由最短的序列决定;
而zip的常用场景为同时遍历多个序列,有时候甚至会和enumerate同时使用:

for i,(a,b)in enumerate(zip(seq1,seq2)):
    print('{0}:{1},{2}'.format(i,a,b))

0:foo,A
1:bar,B
2:baz,C

给定一个已“配对”的序列时,zip函数有一种机智的方式去“拆分”序列。这种方式的另一种思路就是将行的列表转换为列的列表:

list = [('Nolan','Ryan'),('Roger','Clemens'),('Schilling','Curt')]
first_name,last_name = zip(*list)

first_name
('Nolan', 'Roger', 'Schilling')

last_name
('Ryan', 'Clemens', 'Curt')

4、reversed

reversed函数将序列的元素倒序排列:

list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

请牢记,reversed是一个生成器,因此如果没有使用list函数或进行for循环的时候,它并不会产生一个倒序的列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格陵Lan丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值