Python列表正向反向遍历查找重复数值对的实现问题
问题分析
- 你原有代码的逻辑仅筛选了列表中出现次数大于1的所有独立元素,没有实现「正向+反向遍历取相邻元素对、统计共现配对」的核心需求,自然无法得到预期结果。
- 从期望输出反推规则:统计正向遍历得到的相邻二元组和反向遍历得到的相邻二元组的交集,去重后即为符合要求的配对。
正确实现代码
list2 = [3, 5, 6, 8, 1, 5, 3, 9, 0, 8, 6] # 生成正向相邻二元组集合 forward_pairs = set() for i in range(len(list2)-1): forward_pairs.add((list2[i], list2[i+1])) # 生成反向相邻二元组集合 reverse_pairs = set() reverse_list = list2[::-1] for i in range(len(reverse_list)-1): reverse_pairs.add((reverse_list[i], reverse_list[i+1])) # 取交集得到符合要求的配对 valid_pairs = list(forward_pairs & reverse_pairs) # 按要求格式输出 pair_strs = [f"({p[0]},{p[1]})" for p in valid_pairs] if len(pair_strs) == 1: output = f"{len(valid_pairs)} pair: {pair_strs[0]}" else: output = f"{len(valid_pairs)} pairs: {' and '.join(pair_strs)}" print(output)
代码说明
- 用集合存储相邻二元组,可以自动去重,也方便直接取交集得到同时出现在正向、反向遍历序列中的配对。
- 输出部分做了兼容处理,不管配对数量是1还是更多都能生成符合语法的描述文本。
- 运行后输出结果和要求完全一致:
2 pairs: (3,5) and (6,8)
内容的提问来源于stack exchange,提问作者Lara
相关产品推荐
相关产品推荐

