gpt4 book ai didi

python - 查找列表中出现次数最多的数字

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:44 25 4
gpt4 key购买 nike

def print_most_numbers_occurrences(numbers_str):
number_list = list(numbers_str)
for i in number_list:
i=max(number_list,key=number_list.count)
print(i)

def test_print_most_numbers_occurrences():
print_most_numbers_occurrences('2 3 40 1 5 4 3 3 9 9')
print_most_numbers_occurrences('9 30 3 9 3 1 4')
print_most_numbers_occurrences('19 30 13 4 9 3 1 4')


def main():
print(test_print_most_numbers_occurrences())


main()

输出

None

当我尝试这种方式时它起作用了:

>>> lst = [1, 2, 45, 55, 5, 4, 4, 4, 4, 4, 545, 56, 6, 7, 67]
>>> max(lst,key=lst.count)
4

我想确定出现次数最多的数字。我不确定第一个 def 函数哪里做错了。

最佳答案

您首先需要正确解析您的输入。您不能单独使用 split(""),因为您的输入之一有双倍空格。

其次,您不需要循环,因为 max 会为您执行循环。

def print_most_numbers_occurrences(numbers_str):
number_list = [int(x) for x in numbers_str.split()]
i=max(number_list,key=number_list.count)
print(i)

由于您在循环,我冒昧地假设您正在尝试处理多个数字可能出现相同次数的情况(例如:'2 3 40 1 5 4 3 3 9 9 9').在这种情况下,以下代码将获得所有最大值:

def print_most_numbers_occurrences(numbers_str):
print(numbers_str.split(" "))
number_list = [int(x) for x in numbers_str.split()]
most_occurances = []
for i in set(number_list):
occurances = number_list.count(i)
if len(most_occurances) == 0:
most_occurances.append(i)
elif most_occurances[0] < occurances:
most_occurances = [i]
elif most_occurances[0] == occurances:
most_occurances.append(i)
print(most_occurances)

这是一个更简洁的版本,使用了稍微复杂的代码:

def print_most_numbers_occurrences(numbers_str):
number_list = [int(x) for x in numbers_str.split()]
result = {i : number_list.count(i) for i in set(number_list)}
highest = max(result.values())
most_occurances = [k for k, v in result.items() if v == highest]
print(most_occurances)

如果您需要高效的代码,明智的做法是使用collections Counter:

from collections import Counter

def print_most_numbers_occurrences(numbers_str):
number_list = [int(x) for x in numbers_str.split()]
result = Counter(number_list)
highest = max(result.values())
most_occurances = [k for k, v in result.items() if v == highest]
print(most_occurances if len(most_occurances) > 1 else most_occurances[0])

关于python - 查找列表中出现次数最多的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44192668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com