【发布时间】:2011-03-30 18:32:51
【问题描述】:
关于 python for 循环的一个特别感兴趣的问题。工程程序通常需要以前或将来的索引值,例如:
for i in range(0,n):
value = 0.3*list[i-1] + 0.5*list[i] + 0.2*list[i+1]
等等……
不过我更喜欢简洁的 Python 语法:
for item in list:
#Do stuff with item in list
或二维点数据列表:
for [x,y] in list:
#Process x, y data
我喜欢循环遍历列表而不显式使用索引来引用列表中的项目的概念。我想知道是否有一种干净的方法可以在不循环索引(或不单独跟踪索引)的情况下获取上一个或下一个项目?
编辑:
感谢 Andrew Jaffe(以及代理 Mark Byers)和 gnibbler 提供的简单、可扩展的示例。直到现在我还不知道 itertools 或 nwise 模块。 John Machin - 感谢您提供了一个非常复杂的示例,说明不该做什么。您在这个示例中付出了很多努力,显然我提出的有点递归的算法无法生成与输入列表具有相同数量元素的列表,并且如果不使用显式索引会出现问题。像这样的算法通常会出现在信号处理中。
【问题讨论】: