gpt4 book ai didi

python - zip 与 iter( ) 与变量和列表

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:32 25 4
gpt4 key购买 nike

x = iter([1,2,3,4])
r1 = zip(x, x, x)
r2 = zip(iter([1,2,3,4]),iter([1,2,3,4]),iter([1,2,3,4]))
r3 = zip([1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4])

print "r1 = %s"%r1
print "r2 = %s"%r2
print "r3 = %s"%r3

[output]
r1 = [(1, 2, 3)]
r2 = [(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4)]
r3 = [(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4)]

我想知道为什么这三个输出与我想象的有很大不同。在我看来,我猜测 r1 与 r2 的结果相同,而 r3 不同。但事实并非如此。

最佳答案

在第一种情况下,只有迭代器,x ,并且在 zip引用三次:

>>> x = iter([1,2,3,4])
>>> r1 = zip(x, x, x)
>>> print "r1 = %s"%r1
r1 = [(1, 2, 3)]

为了创建一个元组,zip 必须从 x 中获取三个元素。前三个可用元素是 1、2 和 3。

为了创建第二个元组,zip 再次尝试。这次,它得到 4,然后 x是空的。它无法完成第二个元组。因此输出只是 [(1, 2, 3)] .

在其他情况下,zip 的参数是三个单独且独立的迭代。因此,对于第一个元组,zip 获取 1、1 和 1。对于第二个元组,它获取 2、2 和 2,依此类推:

>>> r2 = zip(iter([1,2,3,4]),iter([1,2,3,4]),iter([1,2,3,4]))
>>> r3 = zip([1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4])
>>> print "r2 = %s"%r2
r2 = [(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4)]
>>> print "r3 = %s"%r3
r3 = [(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4)]

关于python - zip 与 iter( ) 与变量和列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47526165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com