python 如何在一个for循环中遍历两个列表

利用python自带的zip函数可同时对两个列表进行遍历,代码以下:python

>>> list1 = ['a', 'b', 'c', 'd']
>>> list2 = ['apple', 'boy', 'cat', 'dog']
>>> for x, y in zip(list1, list2):
      print(x, 'is', y)
# 输出
a is apple
b is boy
c is cat
d is dog

 

原理说明app

Python3中的zip函数能够把两个或者两个以上的迭代器封装成生成器,这种zip生成器会从每一个迭代器中获取该迭代器的下一个值,而后把这些值组装成元组(tuple)。这样,zip函数就实现了平行地遍历多个迭代器。函数

注意
spa

若是输入的迭代器长度不一样,那么,只要有一个迭代器遍历完,zip就再也不产生元组了,zip会提早终止,这可能致使意外的结果,不可不察。若是不能肯定zip所封装的列表是否等长,能够改用 itertools 内置模块中的zip_longest 函数,这个函数不在意它们的长度是否相等。code

在Python2中,zip不是生成器,它平行地遍历这些迭代器,组装元组,并把这些元组所构成的列表一次性完整地返回,这可能会占用大量内存并致使程序崩溃,若是在Python2中要遍历数据量大的迭代器,推荐使用 itertools 内置模块中的 izip 函数。blog

相关文章
相关标签/搜索