Python如何基于初始列表的连续相邻元素生成两两配对元组列表
实现方法
方法1:使用zip(最简洁)
直接将原列表和偏移一位的切片传入zip即可,zip会自动按位置配对元素,最终转为列表就能得到目标结果:
test = ['a', 'b', 'c','d'] res = list(zip(test, test[1:])) # 输出:[('a', 'b'), ('b', 'c'), ('c', 'd')]
方法2:迭代器+next实现
如果你想用迭代器搭配next的方案,正确写法如下:
test = ['a', 'b', 'c','d'] it = iter(test) res = [] prev = next(it) for current in it: res.append((prev, current)) prev = current
方法3:内存优化版本(适用于超长列表/迭代器场景)
如果原列表长度极大,或者原输入本身是迭代器、无法做切片操作,可以用itertools.tee生成两个独立迭代器实现,避免额外切片内存占用:
from itertools import tee test = ['a', 'b', 'c','d'] it1, it2 = tee(test) next(it2, None) res = list(zip(it1, it2))
内容的提问来源于stack exchange,提问作者laszlopanaflex
相关产品推荐
相关产品推荐

