【发布时间】:2013-04-13 01:31:01
【问题描述】:
在容器上执行多次迭代的正确方法是什么?来自python文档:
Iterator - 一个容器对象(例如一个列表)产生一个新的 每次将迭代器传递给 iter() 函数或在 for 循环。用迭代器尝试这个只会返回相同的 上一次迭代过程中使用的迭代器对象已用尽,使得 它看起来像一个空容器。
协议的意图是一旦迭代器的 next() 方法 引发 StopIteration,它将在后续调用中继续这样做。 不遵守此属性的实现被视为已损坏。 (此约束是在 Python 2.3 中添加的;在 Python 2.2 中,各种 迭代器根据此规则被破坏。)
如果我有这个代码:
slist = [1,2,3,4]
rlist = reversed(slist)
list(rlist)
#[4,3,2,1]
tuple(rlist)
#()
迭代“rlist”两次最简单、最正确的方法是什么?
【问题讨论】:
-
请注意,您不会对列表进行两次迭代——这很容易。您实际上是在对
<type 'listreverseiterator'>进行两次迭代。
标签: python