zip variable empty after first use
Python 3.2.3,使用Idle和Python Shell
1 2 3 4 5 6 | t = (1,2,3) t2 = (5,6,7) z = zip(t,t2) for x in z : print(x) |
结果:
(1,5)
(2,6)
(3,7)
紧接着放置完全相同的循环代码以再次在for循环中显示z(在上面和下一部分之间不执行任何操作):
1 2 | for x in z : print(x) |
结果:
(空白,没有结果)
z仍然存在,因为
1 | z |
结果是
1 | <zip object at 0xa8d48ec> |
我什至可以重新分配要重新压缩的t,t2,但随后它只能工作一次,并且只能一次又一次地工作。
这是应该如何工作的吗? 在文档http://docs.python.org/3.2/library/functions.html#zip中没有提及此内容。
这就是在python 3.x中的工作方式。 在python2.x中,
1 | z = list(zip(t,t2)) |
请注意,在python3.x中,许多内置函数现在返回迭代器而不是列表(
因为
1 | z = list(zip(t, t2)) |
1 | z = list(zip(t, t2)) |