python统计不同数字的个数

python统计不同数字的个数

作者:Elara发布时间:2026-03-28阅读时长:0 分钟阅读次数:5

用户关注问题

Q
如何用Python统计列表中不同数字的数量?

我有一个数字列表,想知道里面有多少个不同的数字,Python应该怎么做?

A

使用集合(set)统计不同数字的个数

Python中可以利用集合(set)的无重复元素特性,将列表转换成集合,然后用len()函数获取集合的大小,即为不同数字的个数。例如:

numbers = [1, 2, 2, 3, 4, 4, 4, 5]
unique_count = len(set(numbers))
print(unique_count) # 输出5

Q
有没有更高效的方法统计大数据中不同数字的数量?

如果我有一个包含大量数字的数据集,用常规方法统计不同数字会不会很慢?有什么更有效率的解决办法?

A

采用集合或字典结构提升统计效率

对于大型数据集,使用集合(set)依然很高效,因为其底层实现是哈希表,查找和插入操作平均复杂度为O(1)。如果需要同时统计每个数字出现的次数,可以利用collections模块中的Counter,同时统计种类数和频率十分方便。示例:

from collections import Counter
numbers = [...] # 大量数字列表
counter = Counter(numbers)
unique_count = len(counter)
print(unique_count)

Q
Python中如何统计数组中不同数字的频次分布?

除了知道不同数字有多少,我还想知道它们各自出现了多少次,该怎么实现?

A

利用collections.Counter统计频次分布

collections模块的Counter类非常适合此需求。它可以接受一个序列作为参数,返回一个字典,键为数字,值为该数字的出现次数。示例代码如下:

from collections import Counter
numbers = [1,2,2,3,3,3,4]
counter = Counter(numbers)
print(counter) # 输出Counter({3: 3, 2: 2, 1: 1, 4: 1})