我有以下列表:
[0, 1, 2, 3, 4, 6, 6, 17, 16, 9, 10, 23, 12, 13, 14, 15, 16, 17, 18, 4, 20, 4, 22, 23, 24, 4, 4]
我想知道如何在不使用循环的情况下找到重复次数最多的数字,因为我认为这不是很实用,尤其是对于很长的列表。我的想法是使用一个字典,其元素包含列表中的元素,在这里,如果您通过 for 检查重复次数更多的数字,但是这是一个可能很长但可能有效的过程;最后一个想法是count
在循环中使用该函数来检查列表集的每个元素。
有没有更有效的方法来解决这个问题?有任何想法吗?
谢谢!
早上好,你能用统计库试试吗?
使用基础 Python,您有几种选择:
该对象
Counter()
创建一个包含每个元素和出现次数的元组列表,并且 [ 方法most_common()][2]
返回按出现次数从高到低排序的列表。另一种性能较差但更紧凑的编写方式是:
在这里,我们生成一个
set
列表中唯一元素的集合,并max()
使用所有列表的方法应用一个count(elemento)
返回列表中的数量的方法elemento
。一个可能的解决方案是使用
Counter
:输出:
另一种选择是“scipy”库。
优点:统计数字重复的次数。
缺点:您必须导入另一个模块 numpy。
a = [0, 1, 2, 3, 4, 6, 6, 17, 16, 9, 10, 23, 12, 13, 14, 15, 16, 17, 18, 4, 20, 4, 22, 23, 24, 4, 4]
moda, count = stats.mode(np.array(a))