使用zip()并行迭代
在使用迭代时, 有一个非常方便的技巧:通过zip()函数对多个序列进行并行迭代:
1 days = ['Monday', 'Tuesday', 'Wednesday']
2
3 fruits = ['apple', 'banana']
4
5 drinks = ['coffee', 'tea', 'beer']
6
7 for day, drink, fruit in zip(days, drinks, fruits):
8 print(day, "drink:", drink, "eat: ", fruit)
输出结果为:
Monday drink: coffee eat: apple
Tuesday drink: tea eat: banana
zip函数在最短序列用完后就会停止。上面的例子中fruits的列表是最短的,所以我们无法填充列表,除非人工扩展最短的列表
我们知道,dict()函数会将两项序列,比如元组,列表,字符串,创建为一个字典,同时zip函数可以遍历多个序列,在具有相同位移的项之间创建元组。
如下面两个元组
english = (‘Monday’, ‘Tuesday’, ‘Wednesday’)
french = (‘Lundi’, ‘Mardi', 'Mercredi')
使用zip函数配对两个元组,函数返回值既不是元组也不是列表,而是一个整合在一起的可迭代变量:
list(zip(english, french))
>> [('Monday', 'Lundi'),('Tuesday', 'Mardi'),('Wednesday', 'Mercredi')]
配合dict函数和zip函数的返回值就可以得到一本微型的英法词典:
dict(zip(english,french))
>> ['Monday': 'Lundi', 'Tuesday':'Mardi', Wednesday': 'Mercredi']]