是否有一个函数可以替代Python中的"zip"函数?

Nor*_*rSD 3 python zip iterator list

在Python中,我们都知道有一个有用的功能:例如zip:

a = [1,2,3,4,5]
b = [5,4,3,2,1]
Run Code Online (Sandbox Code Playgroud)

我们可以在一行中"添加"这些列表:

c = [ x[0] + x[1] for x in zip(a,b) ]
Run Code Online (Sandbox Code Playgroud)

但似乎zip创建了一个新列表.在许多情况下,我想要的只是一对数据(a [i],b [i]),我根本不想要"zip"列表.

在c#中,我们可以创建一个迭代器来从a和b获取对数据,因此我们可以避免创建一个新的"zip"列表.

python怎么样?

ale*_*cxe 5

它是itertools.izip():

创建一个聚合来自每个迭代的元素的迭代器.像zip()一样,除了它返回迭代器而不是列表.用于一次几次迭代的锁步迭代.

例:

>>> from itertools import izip
>>> a = [1,2,3,4,5]
>>> b = [5,4,3,2,1]
>>> c = izip(a, b)
>>> c
<itertools.izip object at 0x10d1aaf38>
>>> for x, y in c:
...     print x, y
... 
1 5
2 4
3 3
4 2
5 1
Run Code Online (Sandbox Code Playgroud)

请注意,在Python-3.x izip()中消失了,zip()返回一个迭代器.

  • 值得指出的是,在python3.x中,`itertools.izip`消失了,常规的`zip`返回一个可迭代的对象而不是`list`. (2认同)