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

标签 python python-3.x for-loop

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

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/

相关文章:

python - 如何使用静态变量、自定义 getter 和 setter 扩展 SWIG 中的结构?

Python 3.1 - 在 Blender 中添加库时出错

python - GAE NDB "Result cannot be set twice"错误

java - 如何使用简单的 for 循环创建数组?

javascript - Vue.js 当只有一个根节点时存在多个根节点

python - 为什么我的numpy文件比使用同一数组生成的PNG大?

Python - 将 CSV 列舍入到最近的 30 分钟

python - 无法从网站的着陆页获取所有名称

python - 类型错误 : 'GetAggregatedReport' object does not support indexing

c - 错误: expected expression before ‘char’