zip variable empty after first use(首次使用后 zip 变量为空)
问题描述
Python 3.2
t = (1, 2, 3)
t2 = (5, 6, 7)
z = zip(t, t2)
for x in z:
print(x)
结果:
(1, 5)
(2, 6)
(3, 7)
之后立即放入完全相同的循环,什么都不会打印:
Putting in EXACTLY the same loop immediately after, nothing is printed:
for x in z:
print(x)
z 仍然作为 <zip 对象存在于 0xa8d48ec>.我什至可以重新分配 t、t2 以再次压缩,但它只能工作一次,而且只能工作一次.
z still exists as <zip object at 0xa8d48ec>. I can even reassign the t, t2 to be zipped again, but then it only works once and only once, again.
这是它应该如何工作的吗?文档中没有提及这一点.
Is this how its supposed to work? There's no mention in the docs about this.
推荐答案
这就是它在 python 3.x 中的工作方式.在 python2.x 中,zip 返回一个元组列表,但对于 python3.x,zip 的行为类似于 itertools.izip 在 python2.x 中的行为.要恢复 python2.x 的行为,只需从 zip 的输出中构造一个列表:
That's how it works in python 3.x. In python2.x, zip returned a list of tuples, but for python3.x, zip behaves like itertools.izip behaved in python2.x. To regain the python2.x behavior, just construct a list from zip's output:
z = list(zip(t,t2))
请注意,在 python3.x 中,许多内置函数现在返回迭代器而不是列表(map、zip、filter)
Note that in python3.x, a lot of the builtin functions now return iterators rather than lists (map, zip, filter)
这篇关于首次使用后 zip 变量为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:首次使用后 zip 变量为空
基础教程推荐
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
