使用 for 循环迭代元素不用处理索引变量,还能避免很多缺陷,但是需要一些特殊的 实用函数协助。其中一个是内置的 zip 函数。使用 zip 函数能轻松地并行迭代两个或 更多可迭代对象,它返回的元组可以拆包成变量,分别对应各个并行输入中的一个元素。
zip 函数的名字取自拉链系结物(zipper fastener),因为这个物品用于把 两个拉链边的链牙咬合在一起,这形象地说明了 zip(left, right) 的作 用。zip 函数与文件压缩没有关系。
1,zip 函数返回一个生成器,按需生成元组
2,为了输出,构建一个列表;通常,我们会迭代生成器。
3,zip 有个奇怪的特性:当一个可迭代对象耗尽后,它不发出警告就停止。
4,itertools.zip_longest
函数的行为有所不同:使用可选的fillvalue
(默认值为 None)填充缺失的值,因此可以继续产出,直到最长的可迭代对象耗尽。
为了避免在 for 循环中手动处理索引变量,还经常使用内置的 enumerate 生成器函数。 如果你不熟悉enumerate 函数,一定要阅读“Build-in Functions”文档(https://docs. python.org/3/library/functions.html#enumerate)