You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历列表每次取两个元素且复用前次第二个元素的实现方法

核心解法

你要实现的是相邻元素配对遍历,直接用zip()配对原列表和偏移1位的子列表即可,问号处替换为zip(l, l[1:])就能得到你要的效果:

l = [1,2,3,4,5,6]

for i,k in zip(l, l[1:]):
    print str(i), '+', str(k), '=', str(i+k)

输出完全匹配你的预期:

1+2=3
2+3=5
3+4=7
4+5=9
5+6=11

原理解释

zip()函数会按位置依次拼接多个可迭代对象的元素,长度以最短的可迭代对象为准。l[1:]是原列表去掉第一个元素后的子列表,和原列表配对后刚好就是连续的相邻元素对,自动满足「前一次迭代的第二个元素是下一次迭代的第一个元素」的要求。


其他可选实现

1. 列表推导式实现

如果要直接生成结果列表,可以这么写:

# 生成字符串结果列表
result = [f"{i}+{k}={i+k}" for i,k in zip(l, l[1:])]
# 生成求和结果列表
sum_result = [i+k for i,k in zip(l, l[1:])]

2. 索引遍历实现

不需要依赖zip()的写法,直接通过索引偏移取值:

for idx in range(len(l)-1):
    i = l[idx]
    k = l[idx+1]
    print str(i), '+', str(k), '=', str(i+k)

3. 大列表/惰性迭代场景优化

如果处理的是超大列表或者无法切片的惰性迭代器,可以用itertools.tee实现无额外内存占用的配对:

from itertools import tee

def pairwise(iterable):
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)

# 调用示例
for i,k in pairwise(l):
    print str(i), '+', str(k), '=', str(i+k)

内容的提问来源于stack exchange,提问作者Haziq Sayyed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:36:04