python - Doubley 在 Python 3 中解压一个可迭代对象会删除可迭代对象吗?

标签 python

lst = iter([1, 2, 3])
print([*lst])  # >>> [1, 2, 3]
print([*lst])  # >>> []

这是解包的预期行为吗?我会假设原始数据在解包时不会被修改,只是简单地制作了一个副本?

编辑:

如果是这样,背后的原因是什么?

最佳答案

来自glossary entry for iterators (我的重点):

A container object (such as a list) produces a fresh new iterator each time you pass it to the iter() function or use it in a for loop. Attempting this with an iterator will just return the same exhausted iterator object used in the previous iteration pass, making it appear like an empty container.

关于python - Doubley 在 Python 3 中解压一个可迭代对象会删除可迭代对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52009624/

相关文章:

python - 通过 Pythons 子进程使用换行符和 Linux 邮件命令发送邮件

python - Pygame:测试玩家下方的碰撞?

python - pyside 代码行 'combo.activated[str].connect(self.onActivated)' 中括号的含义是什么?

python - 使用Python确定连接本地套接字的用户

python - PyQt5 - 组合框中有条件的颜色字段 - qsqltablemodel

python - Doctest 失败,退出代码为零

python - 如何自动将数字特殊方法添加到类中?

python - Python 中的快速按位获取列

python - PyQt 正确使用 emit() 和 pyqtSignal()

python - 从一个 DataFrame 中的另一个 DataFrame 中搜索值