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要让这个返回结果只能访问一次,从编程者的角度上来讲这样有什么优势吗?

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!