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

Python如何检测句子列表中的重复语句?现有代码无法识别重复内容求助

代码失效核心原因

  • 错误构造了嵌套列表:f.readlines() 本身已经返回了每行内容为元素的一维列表,你额外执行了list1 = [data],相当于把整个行列表包装成了新列表的唯一元素,此时list1是仅包含1个元素的二维嵌套列表,遍历时永远不会找到重复项,自然输出空列表。
  • 原方案时间复杂度为O(n²),数据量较大时运行效率极低,且没有处理每行末尾可能残留的\n换行符,若部分行末尾换行符存在差异也会导致匹配失败。
  • 原代码未显式关闭打开的文件句柄,存在资源泄漏风险。

无enumerate的最优实现方案

使用collections.Counter做频次统计,时间复杂度仅为O(n),代码简洁且运行效率更高:

from collections import Counter

path = input()
# 用with语法自动管理文件句柄,避免资源泄漏
with open(path, 'r', encoding='utf-8') as f:
    # 若需要严格匹配行尾换行则直接用f.readlines(),若要忽略首尾空白/换行可替换为line.strip()
    lines = [line.rstrip('\n') for line in f]
# 统计每行出现次数
line_count = Counter(lines)
# 筛选所有出现次数≥2的重复行
duplicate_lines = [line for line, cnt in line_count.items() if cnt >= 2]
print(duplicate_lines)
# 若需要同时输出每个内容的重复次数,可直接执行print(line_count.most_common())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 17:00:01