我的下面的程序确实找到了列表中最常见的元素:
numbers = [7, 1, 7, 9, 2, 9, 7, 3, 0]
counter = []
for num in range(10):
n = numbers.count(num)
counter.append(n)
largest = max(counter)
print(counter.index(largest))
Run Code Online (Sandbox Code Playgroud)
输出是 7,这是正确的。
但是,如果我在列表中添加另外 9 个:
numbers = [7, 1, 7, 9, 2, 9, 7, 3, 0, 9]
Run Code Online (Sandbox Code Playgroud)
这意味着列表中有两个最常见的元素(在本例中,7 和 9 都出现了 3 次,如上所示),它只打印其中之一 - 在本例中为 7。
有什么方法可以更改我的代码,以便输出正确吗?
这是一个适用于任何类型数据的解决方案,而不仅仅是适用于事先已知范围内的正整数。
我们使用 a 进行计数collections.Counter,提取最大计数,即最常见数字的计数,然后列出具有相同计数的数字:
from collections import Counter
numbers = [7, 1, 7, 9, 2, 9, 7, 3, 0, 9]
counts = Counter(numbers)
max_count = counts.most_common(1)[0][1]
out = [value for value, count in counts.most_common() if count == max_count]
print(out)
# [7, 9]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2956 次 |
| 最近记录: |