python - 打印解压缩的列表对象返回空列表

标签 python list python-zip

这个问题在这里已经有了答案:





zip variable empty after first use

(3 个回答)


去年关闭。




在下面的代码中,我试图解压缩一个 zip 对象。

x = [1, 2, 3]; y = ['a', 'b', 'c']

z = zip(x, y)
#print(list(z))                #2nd print statement returns [] if this line is uncommented

unzip = zip(*z)
print(list(unzip))             #returns [(1, 2, 3), ('a', 'b', 'c')]

如果我保持代码不变,它就可以正常工作。但是在取消注释第一条打印语句时,第二条打印语句返回 空列表而不是返回解压缩的列表对象。为什么?

最佳答案

zip返回一个迭代器。在 Python 中,迭代器可以被消耗,这意味着一旦你迭代它们,你就不能再重复了。当您执行 list(z) ,你消耗了迭代器 z所以在 zip(*z) 中打开它给了你一个空的迭代器。

使用迭代器背后的想法是它们使用很少的空间(复杂度为 O(1)),因此您不能多次迭代它们,因为这意味着您必须存储所有值,从而导致 O(n) 复杂度。当你多次迭代一个集合时,你实际上每次都在生成一个新的迭代器。

关于python - 打印解压缩的列表对象返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61874339/

相关文章:

python - 是否可以在 Mac App Store 上部署 Python 应用程序?

python 3 url从文件和列表连接

Python - 检查列表中的数字是否是数字的因子

Python - 为什么 enumerate() 导致稍后的 zip() 仅从列表中的最后一项中提取?

python - 如何比较列表列表中的元素?

python - Pandas 具有多索引的行式聚合

python - Django 1.6 Block Trans 无法使用变量

r - 如何获取列表第一层的变量名称?

Python:在不拆分数据的情况下转义特殊字符