一个例子
names = ['Cecilia', 'Lise', 'Marie']
counts = [len(n) for n in names]
print(counts)
如果要输出每个名字的长度
for name, count in zip(names, counts):
print(name, count)
如果增加一个 name,会怎么样
- 会在最短的 list 里截断 ```python names.append(‘Rosalind’) for name, count in zip(names, counts): print(name)
那该怎么办
用
itertools.zip_longest
import itertools
for name, count in itertools.zip_longest(names, counts):
print(f'{name}: {count}')
>>>
Cecilia: 7
Lise: 4
Marie: 5
Rosalind: None
小结
内置的 zip 函数可以同时遍历多个迭代器。
- zip 会创建惰性生成器,让它每次只生成一个元组,
- 所以无论输入的数据有多长, 它都是一个一个处理的。
- 如果提供的迭代器的长度不一致,那么只要其中任何一个迭代完毕,zip 就会停止。
- 如果想按最长的那个迭代器来遍历,那就改用内置的
itertools
模块中的 zip_ longest 函数。