python3中zip生成的可迭代对象只能遍历一次
我是用的python版本是3.8,当我使用dict和zip函数共同创建一个字典时,我发现如果写成下面的形式:
items = dict(zip(['a', 'b', 'c', 'd', 'r'], '12345'))
print(items)
运行后的结果是正确的,可以输出一个字典:
{'a': '1', 'b': '2', 'c': '3', 'd': '4', 'r': '5'}
但是如果我先使用zip生成一个元组,然后将该元组传给list去生成一个列表,再传给dict再去生成一个字典,就没办法得到正确的结果,得到的只是一个空字典。代码如下所示:
items = zip(['a', 'b', 'c', 'd', 'r'], '12345'))
items1 = list(items)
items2 = dict(items)
print(items2)
# 输出为:{}
我查询了一些网络资料,了解到在python2中是zip函数返回值可以多次使用的,但是python3中返回的可迭代对象却只能访问一次,之后再访问就是空。我在编程过程中遇到了这个小问题。当然,在解决问题之后,我也在琢磨为什么python要让这个返回结果只能访问一次,从编程者的角度上来讲这样有什么优势吗?
推荐文章: