这是我的程序,
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]
答案 0 :(得分:29)
只需使用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)
具有与上述相同的结果。
注释
-math.inf
初始化。请注意,第二个代码段的效率比第一个代码段差很多。与这些显式的,类似于fortran的循环相比,Python可以使您更加高效,而在正确使用它的情况下,Python本身也会更加高效。
答案 1 :(得分:19)
您可以做的更短:
item_no = [5, 6, 7, 8, 8]
#compute once - use many times
max_item = max(item_no)
print(item_no.count(max_item) * [max_item])
输出:
[8, 8]
答案 2 :(得分:7)
对于以下任务,您可以使用list
理解:
numbers = [5, 6, 7, 8, 8]
maxnumbers = [i for i in numbers if i==max(numbers)]
print(*maxnumbers,sep=',')
输出:
8,8
*
中的print
运算符用于解压缩值,sep
用来通知print
使用哪种分隔符:在这种情况下为,
。 / p>
编辑:如果要获取最大价值的索引并仅调用max
,请执行以下操作:
numbers = [5, 6, 7, 8, 8]
biggest = max(numbers)
positions = [inx for inx,i in enumerate(numbers) if i==biggest]
print(*positions,sep=',')
输出:
3,4
您可能会检查numbers[3]
等于biggest
和numbers[4]
等于biggest
。
答案 3 :(得分:4)
计算最大数量的出现
在列表中重复以打印计数范围(1)内的最大数字
因此:
item_no = [5, 6, 7, 8, 8]
counter = item_no.count(max(item_no)) # 2
print([max(item_no) for x in range(counter)])
输出:
[8, 8]
答案 4 :(得分:3)
可以通过找到等于最大值的一项来解决此问题:
要提高性能,请在var中存储max
Mvalue = max(item_no)
[i for i in item_no if i==Mvalue]
答案 5 :(得分:2)
我认为最好是一次迭代评估数组中的max
和它的count
def maxs(iterable):
max = None
count = 0
for index, value in enumerate(iterable):
if index == 0 or value >= max:
if value != max:
count = 0
max = value
count += 1
return count * [max]
print (maxs([5, 6, 7, 8, 8])) # [8, 8]
print (maxs([3, 2, 4, 5, 1, 2, 4, 5, 2, 5, 0])) # [5, 5, 5]
print (maxs([])) # []
试试看!
答案 6 :(得分:1)
我认为不可能只用一行就可以找到所有最大数字但是它会有点用,首先我们将按升序对列表进行排序,然后执行此操作
yourList = [7,7,76,4,54,4,5,234,5,56,7,234,34,234,234]
yourList.sort()
ind = yourList.index(max(yourList))
for i in range(ind,ind+(len(yourList)-ind)):
print(yourList[i])
在这基本上我们将获得第一个最大数字的索引,然后我们将其减去列表的长度,我们将获得要加上多少个索引以获得所有最大数字
或
还有另一种方法可以做到这一点
lis = [1,2,3,12,12,1,12,3,4,5,6,12, 12]
count = lis.count(max(lis))
loop = [print(max(lis), end=" ") for i in range(count)]
通过这种方式,我们将获得列表中出现了最大数量的次数并打印了多少次