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

如何优化Python单词统计代码,提升10万级数据量下的运行速度?

优化方案:降低时间复杂度 + 优化输入读取

原代码的性能瓶颈

你这段代码最大的问题是不必要的双重循环:外层遍历words列表的每个元素,每次都重新初始化Counter并再次遍历整个words统计次数。这直接导致时间复杂度飙升至O(n²)——当n是10万时,相当于要执行100亿次操作,慢是必然的。

优化后的基础版代码

直接利用Counter的原生能力,一次统计完成,去掉多余循环:

#!/bin/python3
from collections import Counter

if __name__ == "__main__":
    number = int(input())
    words = [input().strip() for _ in range(number)]
    
    cnt = Counter(words)  # 一次遍历完成统计,时间复杂度O(n)
    print(len(cnt))
    print(*cnt.values(), sep=" ")

进阶优化:提升大数量输入读取速度

处理10万级输入时,input()循环调用的开销会很明显,改用sys.stdin批量读取可进一步提速:

#!/bin/python3
import sys
from collections import Counter

if __name__ == "__main__":
    lines = sys.stdin.read().splitlines()
    number = int(lines[0])
    words = [line.strip() for line in lines[1:number+1]]
    
    cnt = Counter(words)
    print(len(cnt))
    print(*cnt.values(), sep=" ")

优化效果说明

  1. 时间复杂度从O(n²)降至O(n):原代码重复遍历统计,优化后仅需一次遍历单词列表,统计效率提升数个数量级。
  2. 输入读取优化:sys.stdin.read()一次性读取所有输入,避免10万次input()的系统调用开销,进一步缩短整体耗时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:47:43