为了账号安全,请及时绑定邮箱和手机立即绑定

首次使用后zip变量为空

首次使用后zip变量为空

aluckdog 2019-11-04 11:02:41
Python 3.2.3,使用Idle和Python Shellt = (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(在上面和下一部分之间不执行任何操作):for x in z :    print(x)结果:(空白,无结果)z仍然存在,因为z结果是<zip object at 0xa8d48ec>我什至可以重新分配要重新压缩的t,t2,但随后它只能工作一次,并且只能一次又一次地工作。这是应该如何工作的吗?在文档http://docs.python.org/3.2/library/functions.html#zip中没有提及此内容。
查看完整描述

3 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

这就是在python 3.x中的工作方式。在python2.x中,zip返回一个元组列表,但对于python3.x,zip其itertools.izip行为与python2.x中的行为相同。要恢复python2.x的行为,只需从zip的输出构造一个列表:


z = list(zip(t,t2))

请注意,在python3.x,大量的内置函数现在返回迭代器而不是列表(map,zip,filter)


查看完整回答
反对 回复 2019-11-04
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

因为zip在Python 3.x中返回迭代器。如果要重新使用它,请list首先使用它:


z = list(zip(t, t2))


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 503 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信