【问题标题】:difference of zip iterator and list [duplicate]zip迭代器和列表的区别[重复]
【发布时间】:2018-12-19 06:56:49
【问题描述】:

我有一个名为“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)]

有谁能解释一下区别

【问题讨论】:

    标签: python list iterator


    【解决方案1】:

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

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

    当你传递zip(B,B,B) 时,你已经有了一个迭代器。要创建结果序列的第一个元素,它调用B.__iter__() 3 次。所以你得到0,1,2。对于第二个元素,它再次调用B.__iter() 3 次,从而得到3,4,5 等等。

    【讨论】:

    • 实际上,zip 不会为每个压缩元素创建迭代器。
    猜你喜欢
    • 1970-01-01
    • 2018-01-28
    • 2013-08-18
    • 2015-09-16
    • 2018-04-26
    • 2011-01-25
    • 2015-05-22
    • 2012-06-14
    • 1970-01-01
    相关资源
    最近更新 更多