zip迭代器和列表的区别

时间:2018-12-19 06:56:49

标签: python list iterator

我有一个名为“ A”的列表,还有一个名为“ B”的迭代器,“ B”是“ A”的迭代器。

A = [1, 2, 3, 4, 5, 6, 7, 8, 9]

B = iter(A)

zip(A,A,A)的输出是

[(0, 0, 0),
 (1, 1, 1),
 (2, 2, 2),
 (3, 3, 3),
 (4, 4, 4),
 (5, 5, 5),
 (6, 6, 6),
 (7, 7, 7),
 (8, 8, 8)]

zip(B, B, B)的输出是

[(0, 1, 2), (3, 4, 5), (6, 7, 8)]

有人可以解释差异

1 个答案:

答案 0 :(得分:4)

很简单。 zip如何工作?它为每个压缩元素创建迭代器并遍历它们。

当您传递zip(A,A,A)时,它将创建3个迭代器,每个迭代器将从A[0]开始。

通过zip(B,B,B)时,您已经具有一个迭代器。要创建结果序列的第一个元素,它将调用B.__iter__() 3次。这样您得到0,1,2。对于第二个元素,它再次调用B.__iter() 3次,从而得到3,4,5,依此类推。