python中zip函数

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

seq1 = ['foo', 'bar', 'baz']
seq2 = ['one', 'two', 'three']
zipped = zip(seq1, seq2)
print(type(zipped))
list(zipped)
<class 'zip'>
[('foo', 'one'), ('bar', 'two'), ('baz', 'three')]

zip可以处理任意长度的序列,它生成的列表长度由最短的序列决定:

seq1 = ['foo', 'bar', 'baz']
seq2 = ['one', 'two', 'three']
seq3 = [False, True]
list(zip(seq1, seq2, seq3))
[('foo', 'one', False), ('bar', 'two', True)]

 zip的常用场景为同时遍历多个序列,有时会和enumerate同时使用:

for i in enumerate(zip(seq1, seq2)):
    print(i)
(0, ('foo', 'one'))
(1, ('bar', 'two'))
(2, ('baz', 'three'))

 

for i, (a, b) in enumerate(zip(seq1, seq2)):
    print(f"{i}: {a}, {b}")
0: foo, one
1: bar, two
2: baz, three

 给一个已经配对的序列时,zip函数有一种机智的方式取拆分序列,这种方式的另一种思路是将行的列转化为列的列表:

pitchers = [('Nolan', 'Ryan'), 
            ('Roger', 'Clemens'), 
            ('Schilling', 'Curt')]

first_names, last_names = zip(*pitchers)
print(f"first_names:\n {first_names}\n")
print(f"last_names:\n {last_names}")
first_names:
 ('Nolan', 'Roger', 'Schilling')

last_names:
 ('Ryan', 'Clemens', 'Curt')

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值