Skip to main content
 首页 » 编程设计

python之如何迭代/循环列表并引用前 (n-1) 个元素

2025年05月04日36softidea

我需要遍历列表并比较当前元素和前一个元素。我看到两个简单的选项。

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() 

请确保不要在循环中修改某些列表,否则结果将不可预测。