我需要遍历列表并比较当前元素和前一个元素。我看到两个简单的选项。
1) 使用枚举和索引访问项目
for index, element in enumerate(some_list[1:]):
if element > some_list[index]:
do_something()
2) 在连续的项目对上使用 zip()
for i,j in zip(some_list[:-1], some_list[1:]):
if j > i:
do_something()
3) 迭代工具
我个人不喜欢nosklo's answer from here, with helper functions from itertools
那么在 Python 3 中要走的路是什么?
最佳答案
zip 方法可能是最常用的方法,但另一种方法(可能更具可读性)是:
prev = None
for cur in some_list:
if (prev is not None) and (prev > cur):
do_something()
prev = cur
如果 None 可以出现在 some_list 的某处,这显然是行不通的,否则它会做你想做的事。
另一个版本可能是枚举方法的变体:
for prev_index, cur_item in enumerate(somelist[1:]):
if somelist[prev_index] > cur_item:
do_something()
请确保不要在循环中修改某些列表,否则结果将不可预测。
关于python - 如何迭代/循环列表并引用前 (n-1) 个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32320610/