Python遍历数组时获取当前及下一相邻元素的代码优化方法
相邻元素遍历代码优化方案
针对你需要遍历序列时同步获取当前元素及紧邻下一个元素的需求,原手动维护双迭代器的写法可以大幅简化:
Python 3.10+ 最优写法
直接使用标准库itertools.pairwise,这是标准库专门为相邻元素配对遍历设计的接口,无需手动控制迭代器偏移、遍历长度:
from itertools import pairwise for obj1, obj2 in pairwise(df.index): # obj1为当前元素,obj2为相邻下一个元素,直接编写处理逻辑即可 pass
该实现默认遍历到倒数第二个元素终止,和你原代码len(df.index)-1的遍历范围完全匹配,不会出现索引越界问题,也无需提前将df.index转换为list,直接传入可迭代对象即可,性能更优。
低版本Python兼容写法
如果使用Python 3.10以下版本,针对pandas Index这类支持切片的对象,直接用zip配对即可:
for obj1, obj2 in zip(df.index, df.index[1:]): # 处理逻辑与上述写法完全一致 pass
如果是不支持切片的普通可迭代对象,可以用单迭代器偏移的方式实现,比原写法维护两个迭代器更简洁:
offset_itr = iter(df.index) next(offset_itr, None) # 迭代器提前偏移一位 for obj1, obj2 in zip(df.index, offset_itr): pass
原代码可优化的冗余点
- 无需将
df.index显式转为list,其本身就是可迭代对象,直接迭代减少不必要的内存开销 - 无需手动维护两个迭代器重复调用
next(),配对遍历逻辑已有成熟的标准库实现 - 无需通过
range(len(...))手动控制遍历次数,直接迭代可迭代对象可以避免手动计算长度带来的索引越界风险
内容的提问来源于stack exchange,提问作者Mahdi Soleimani
相关产品推荐
相关产品推荐

