如何将列表拆分为包含重叠元素的tuple列表?
解决方案
可以用Python内置的zip()函数快速实现这个需求,只需要将原列表和原列表的切片(从第二个元素开始)配对即可:
temp = [-39.5, -27.5, -15.5, -3.5, 8.5, 20.5, 32.5, 44.5, 56.5, 68.5, 80.5, 92.5, 104.5] temps = list(zip(temp, temp[1:])) print(temps)
运行后输出结果完全符合预期:
[(-39.5, -27.5), (-27.5, -15.5), (-15.5, -3.5), (-3.5, 8.5), (8.5, 20.5), (20.5, 32.5), (32.5, 44.5), (44.5, 56.5), (56.5, 68.5), (68.5, 80.5), (80.5, 92.5), (92.5, 104.5)]
原理说明
temp[1:]生成原列表从索引1开始的子列表:[-27.5, -15.5, ..., 104.5]zip(temp, temp[1:])会把两个列表对应位置的元素配对,生成包含元组的迭代器- 用
list()将迭代器转换为列表,即可得到目标结果
如果偏好手动遍历的方式,也可以用列表推导式实现:
temps = [(temp[i], temp[i+1]) for i in range(len(temp)-1)]
这个方法通过遍历原列表的索引(从0到倒数第二个元素的索引),逐个取出相邻元素组成元组,最终生成目标列表。
内容的提问来源于stack exchange,提问作者Kapil
相关产品推荐
相关产品推荐

