使用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']]

posted @ 2017-10-17 15:47  songkunhuang  阅读(567)  评论(0编辑  收藏  举报