【发布时间】:2014-02-12 13:28:21
【问题描述】:
我希望迭代 list_iterator 两次。当我目前尝试执行此操作时,迭代器第二次没有可迭代的内容。可以重置吗?
l = iter(["1","2","3","4"])
for i in l:
print(i)
for i in l:
print(i)
一个 list_iter 对象被传递给我希望在其中迭代两次的函数。传递 list_iterator 对象是不好的做法吗?
【问题讨论】:
-
最好自己传递列表,不需要创建迭代器。
-
迭代器是“使用和抛出”类型的对象
-
“传递 list_iterator 对象是不好的做法吗?” - 我的经验是,传递只能迭代一次的东西可能会引起一些混乱(即使是生成器和文件对象,接收者也不一定清楚他们得到了什么)。函数需要记录它们的输入是否需要多次迭代,以及它们的输出是否可以多次迭代。这是预期的,例如任何带有
yield的函数都会返回一些只能迭代一次的东西。你只需要确保你知道它是什么时候发生的。
标签: python python-3.x