【发布时间】:2012-06-21 21:50:53
【问题描述】:
我一直在以简单的方式遍历列表的内容以获取用户输入:
for n in [ 1, 2, 3, 4 ]:
command = raw_input ( "%d >> " % (n) )
...
我想实现一个撤消功能,这意味着将迭代“倒回”回之前的值。这是一种天真的方法,它确实减少了 n 的值,但随后跳过了原始值,因为指向列表的内部指针没有改变:
for n in [ 1, 2, 3, 4 ]:
if f(n):
n -= 1
...
在文档中,我看到了一个 iterator.next(),但没有看到 iterator.last()。我想我可以切换到通过整数索引访问列表成员,并通过自己操作索引来手动滚动循环,这并不是那么危险,但有没有更好的方法?
【问题讨论】:
-
您必须自己实现它(自己保存最后 5-10 项),不可能“倒带”迭代器。此外,它是 Making a python iterator go backwards? 的副本
-
我认为你可以使用
while循环来实现这个。 -
他说他有一个“列表”,我认为实际上不会使用
range(1, 5)列表。