美文网首页PYTHON收藏python程序员
Python中使用zip函数同时遍历多个迭代器

Python中使用zip函数同时遍历多个迭代器

作者: 星垂平野阔 | 来源:发表于2016-11-11 22:31 被阅读485次

版本为Python3。
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

这样就很简洁地实现了同时遍历两个列表,very pythonic!!!

原理

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

注意

  • 如果输入的迭代器长度不同,那么,只要有一个迭代器遍历完,zip就不再产生元组了,zip会提前终止,这可能导致意外的结果,不可不察。如果不能确定zip所封装的列表是否等长,可以改用 itertools 内置模块中的zip_longest 函数,这个函数不在乎它们的长度是否相等。
  • 在Python2中,zip不是生成器,它平行地遍历这些迭代器,组装元组,并把这些元组所构成的列表一次性完整地返回,这可能会占用大量内存并导致程序崩溃,如果在Python2中要遍历数据量大的迭代器,推荐使用 itertools 内置模块中的 izip 函数。

相关文章

  • Python中使用zip函数同时遍历多个迭代器

    版本为Python3。zip函数是Python内置的函数。 应用举例 这样就很简洁地实现了同时遍历两个列表,ver...

  • zip() --同时迭代多个序列

    1、可以使用zip()函数来同时迭代多个序列 zip(a, b)的工作原理是创建出一个迭代器,该迭代器可产生出元组...

  • python zip() 同时遍历多个序列

    4.11 如果我们要遍历的元素包含在多个序列中,如何对他们同时进行遍历 zip()函数可以同时遍历多个序列 zip...

  • 【2017-09-26】迭代器与生成器(三)

    同时迭代多个序列运用内置zip()函数zip(a, b) 会生成一个可返回元组 (x, y) 的迭代器,其中 x ...

  • zip(*iterables)函数详解

    zip(*iterables)函数详解 zip()函数的定义 从参数中的多个迭代器取元素组合成一个新的迭代器; 返...

  • Python3 - 同时迭代多个序列

    问题 同时迭代多个序列,每次分别从一个序列中取一个元素。 解决方案 同时迭代多个序列时,使用 zip() 函数。比...

  • zip()

    问题你想同时迭代多个序列,每次分别从一个序列中取一个元素。解决方案为了同时迭代多个序列,使用 zip() 函数。比...

  • 内置函数zip

    1、函数定义:zip(*iterables,strict=False) 在多个迭代器上并行迭代,从每个迭代器返回一...

  • zip(*iterables) 函数

    zip()函数的定义 从参数中的多个迭代器取元素组合成一个新的迭代器; 返回一个zip对象,其内部元素为元组;可以...

  • python迭代器、生成器和生成式

    迭代器 1.什么是迭代器(iter) 迭代器是python中的容器类的数据类型,可以同时存储多个数据。取迭代器中的...

网友评论

本文标题:Python中使用zip函数同时遍历多个迭代器

本文链接:https://www.haomeiwen.com/subject/fdgfpttx.html