【发布时间】:2010-11-03 23:01:32
【问题描述】:
如何遍历对象列表,访问上一个、当前和下一个项目?像这个 C/C++ 代码,在 Python 中?
foo = somevalue;
previous = next = 0;
for (i=1; i<objects.length(); i++) {
if (objects[i]==foo) {
previous = objects[i-1];
next = objects[i+1];
}
}
【问题讨论】:
-
如果 foo 在列表的开头或结尾会发生什么?目前,这将超出您的数组范围。
-
如果你需要第一次出现“foo”,那么在匹配时从“for”块中“break”。
-
您要从第 1 个(不是第 0 个)元素开始迭代,并在最后一个元素结束迭代吗?
-
是否保证
foo在列表中只出现一次?如果它多次出现,这里的一些方法会失败,或者只找到第一个。如果它永远不会发生,其他方法将会失败,或者抛出像 ValueError 这样的异常。提供一些测试用例会有所帮助。 -
另外,您的示例是一系列对象,它们都具有已知长度,并且是可索引的。这里的一些答案是泛化到迭代器,它们并不总是可索引的,并不总是有长度的,也不总是有限的..