无法多次解压缩zip对象

时间:2014-07-30 15:10:48

标签: python python-3.x

为什么这不起作用?:

t = zip([3],[4],[3])
print("1:",*t)
print("2:",*t)

我们不能在Python中第二次解包,为什么会这样?

1 个答案:

答案 0 :(得分:5)

zip在Python 3.x中返回iterator,而不是像在Python 2.x中那样返回列表。这意味着,在您解压缩一次后,它将耗尽并且不再可用:

>>> t = zip([3],[4],[3])
>>> print("1:",*t)
1: (3, 4, 3)
>>> list(t) # t is now empty
[]
>>>

您需要将迭代器显式转换为sequence(列表,元组等)。如果你想多次解压缩它:

>>> t = tuple(zip([3],[4],[3]))
>>> print("1:",*t)
1: (3, 4, 3)
>>> print("2:",*t)
2: (3, 4, 3)
>>>