我有一个名为“ 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)]
有人可以解释差异
答案 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
,依此类推。