如何找到元素列表中可能不唯一的最大数字?

2023-12-27

这是我的程序,

item_no = []
max_no = 0
for i in range(5):
    input_no = int(input("Enter an item number: "))
    item_no.append(input_no)
for no in item_no:
    if no > max_no:
       max_no = no
high = item_no.index(max_no)
print (item_no[high])

输入示例:[5, 6, 7, 8, 8]

输出示例:8

如何更改程序以输出数组中相同的最高数字?

预期输出:[8, 8]


只要得到最大的利用max然后它的count并将两者结合在列表理解中。

item_no = [5, 6, 7, 8, 8]

max_no = max(item_no)
highest = [max_no for _ in range(item_no.count(max_no))]
print(highest)  # -> [8, 8]

请注意,如果您的最大值仅出现一次,这将返回单个项目的列表。


更接近您当前编程风格的解决方案如下:

item_no = [5, 6, 7, 8, 8]
max_no = 0  # Note 1 
for i in item_no:
    if i > max_no:
        max_no = i
        high = [i]
    elif i == max_no:
        high.append(i)

当然,结果与上面相同。

Notes

  1. 我假设你正在处理 N* (1, 2, ...) 仅数字。如果不是这种情况,则初始化-math.inf应该使用。

请注意,第二个代码片段的效率比第一个代码片段低很多。 Python 可以让你比这些显式的、类似 Fortran 的循环更高效,而且当你正确使用它时,它本身也会更高效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何找到元素列表中可能不唯一的最大数字? 的相关文章

随机推荐