如何移除元组列表中连续重复元素并展开为一维列表
处理含元组的列表:展开并移除连续重复元素
实现思路
核心逻辑是逐个遍历所有元素(先展开所有元组),每次添加元素前检查是否与结果列表的最后一个元素重复,重复则跳过,不重复则添加。这个逻辑既能处理单个元组内部的连续重复,也能处理相邻元组之间的衔接重复。
代码实现
# 输入列表 input_list = [("0", "1"), ("1", "2"), ("0", "2"), ("2", "0")] result = [] for tpl in input_list: for item in tpl: # 如果结果为空,或者当前元素和最后一个元素不重复,就添加 if not result or item != result[-1]: result.append(item) print(result) # 输出:["0", "1", "2", "0", "2", "0"]
逻辑说明
- 初始化空列表
result存储最终结果 - 外层循环遍历每个元组,内层循环遍历元组中的每个元素
- 对于每个元素:
- 如果
result为空(处理第一个元素),直接添加 - 否则对比当前元素和
result的最后一个元素,不重复才添加
- 如果
- 这样不管是元组内部的重复(比如
("3","3")只会保留一个"3"),还是相邻元组的衔接重复(比如前一个元组的末尾"1"和后一个元组的开头"1"),都会被自动去重。
针对你思路的补充
你提到的if index[0] == index[1]只能处理单个元组内部的重复,但没法处理元组之间的衔接重复。上面的通用逻辑可以一次性覆盖两种场景,代码更简洁也更健壮。
内容的提问来源于stack exchange,提问作者Belkacem1221
相关产品推荐
相关产品推荐

