You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何删除文本文件中重复的逆序数字行

实现思路
  • 核心逻辑是为每对数字生成唯一的无向标识:将每行的两个数字排序后组成不可变的元组,互为逆序的数字对会生成完全相同的元组
  • 用集合存储已经出现过的标识,利用集合O(1)的查询效率快速判断当前行是否为逆序重复行
  • 遍历所有行,仅保留标识未在集合中出现过的行,同时将新标识存入集合
可直接运行的代码实现
def remove_reverse_duplicates(input_path, output_path):
    seen = set()
    with open(input_path, 'r', encoding='utf-8') as in_f, open(output_path, 'w', encoding='utf-8') as out_f:
        for line in in_f:
            # 跳过空行
            line_stripped = line.strip()
            if not line_stripped:
                continue
            # 分割得到两个数字,默认split支持匹配任意空白字符(单个/多个空格、制表符都兼容)
            a, b = map(int, line_stripped.split())
            # 生成无向唯一标识
            key = tuple(sorted((a, b)))
            if key not in seen:
                seen.add(key)
                # 保留原行格式写入
                out_f.write(line)

# 调用时替换为你本地的实际文件路径即可
remove_reverse_duplicates('input.txt', 'output.txt')
补充说明
  • 该方案时间复杂度为O(n),n为文件行数,针对数千行的场景运行效率极高,完全没有性能压力
  • 默认保留所有逆序对中第一次出现的行,如果需要保留最后一次出现的行,可先遍历所有行存下所有key对应的最后一行内容,再统一写入即可
  • 如果你的文件分隔符是固定的特殊字符,只需要修改split()的入参即可,比如分隔符是逗号就改为split(',')

内容的提问来源于stack exchange,提问作者kiter23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:27:03