如何在Python元组列表中插入首项连续、第二项为0的补全元素
首项不连续元组列表补全连续首项实现方案
需求说明
现有首项为整数但不连续的元组列表,需要在相邻原有元组之间插入首项为连续递增值、第二项为0的元组,最终使列表所有元组首项完全连续。
输入示例
L = [(1, 12), (3, 14), (6, 19), ..., (7412, 15), (7415, 15)]
期望输出示例
L = [(1, 12), (2, 0) ,(3, 14), (4, 0), (5, 0), (6, 19), ... , (7412, 15), (7413, 0), (7414, 0), (7415, 15)]
实现代码(Python)
def fill_continuous_tuple_list(L): if not L: return [] # 若原列表首项未按升序排列,先取消下一行的注释执行排序 # L.sort(key=lambda x: x[0]) res = [L[0]] for i in range(1, len(L)): prev_key = res[-1][0] curr_key, curr_val = L[i] # 插入中间缺失的连续首项元组 for missing_key in range(prev_key + 1, curr_key): res.append((missing_key, 0)) res.append(L[i]) return res # 调用示例 L = [(1, 12), (3, 14), (6, 19), (7412, 15), (7415, 15)] result = fill_continuous_tuple_list(L) print(result)
逻辑说明
- 首先校验输入列表是否为空,为空直接返回空列表
- 若原始列表的元组首项未按升序排列,可先通过首项排序保证后续插入逻辑正常
- 遍历原始列表,每次对比当前元组首项和结果列表最后一个元组的首项,若存在间隔则插入所有缺失的首项对应、第二项为0的元组
- 最后插入当前遍历到的原始元组,直到遍历完成
内容的提问来源于stack exchange,提问作者AdrixnIPP
相关产品推荐
相关产品推荐

