这是我的程序,
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
- 我假设你正在处理 N* (1, 2, ...) 仅数字。如果不是这种情况,则初始化
-math.inf
应该使用。
请注意,第二个代码片段的效率比第一个代码片段低很多。 Python 可以让你比这些显式的、类似 Fortran 的循环更高效,而且当你正确使用它时,它本身也会更高效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)