【问题标题】:How to find max() in a list and find its index value as well using max()?如何在列表中找到 max() 并使用 max() 找到它的索引值?
【发布时间】:2018-05-07 04:10:11
【问题描述】:

只是想知道是否有人能发现我做错了什么,我的印象是下面的代码会找到最大数字和最大数字的索引。这是我在下面使用的代码。

def select_winner():
    print('The game scores are:')
    for i in range (4):
        print(Players[i], ' = ', score[i])
    winner = max(enumerate(score))
    print('----------------')
    print()
    print('The Winner is ', Players[winner[0]], ' with ', str(winner[1]),' 
    points!')
    print(winner)

输出:

#The game scores are:
#Jarrah  =  86
#Reza  =  121
#Marge  =  72
#Homer  =  91
#----------------
#The Winner is  Homer  with  91  points!
#(3, 91)

max 应该选择最大值吧?如果我没有记错,枚举应该选择值及其索引,当我将它们一起打印时,我应该得到最高值及其在列表中的位置。好吧,至少这就是我想要做的。被选为最高分数的索引应该与获得该分数的玩家共享相同的索引,以及他们的列出方式。

任何帮助都会很棒 谢谢

更新:

def select_winner():
    print('The game scores are:')
    for i in range (4):
        print(Players[i], ' = ', score[i])
    winner =(max(score))
    print('----------------')
    print()
    print('The Winner is '+ Players[winner[0]]+ ' with '+ str(winner[1])+ ' 
    points!')
    print(winner)

输出:

#The game scores are:
#Jarrah  =  91
#Baldwin  =  73
#Kepa  =  112
#Long  =  106
#----------------
#in select_winner
#print('The Winner is '+ Players[winner[0]]+ ' with '+ str(winner[1])+ ' 
#points!')
#TypeError: 'int' object is not subscriptable

任何人都知道解决方法,并且 max() 本身是否会提取最大数字所在位置的索引?如果没有,有没有办法做到这一点?

已修复!:

def select_winner():
    k=0
    print('The game scores are:')
    for i in range (4):
    print(Players[i], ' = ', score[i])
    winner2=(score.index(max(score)))
    winner=str(max(score))
    print('----------------')
    print()
    print('The Winner is '+ Players[winner2]+ ' with '+ winner + ' points!')

【问题讨论】:

  • 提示:试试 max(score)
  • 试过了,但我也需要列表中最大数的索引
  • winner = max(enumerate(score), key= lambda x: x[1])

标签: python


【解决方案1】:

你想使用max(score)enumerate 返回一个tuple (index, element);元组的最大值是在第一个元素上计算的,在这种情况下,它总是最后一个(最大的索引)。

winner = max(score)

如果您还想要索引,可以按照@ChrisRand 在 cmets 中的建议进行操作:

winner = max(enumerate(score), key= lambda x: x[1])

【讨论】:

  • 是的,我尝试使用 max(),但它给了我一个错误,正如您在我的帖子更新中看到的那样,我还需要在列表中可以找到最大数量的索引,最大值只返回最大值
  • 他们想要索引以及最大值
【解决方案2】:

Enumerate 为您提供索引和项目的元组。 例如,如果

>>> score
[1, 2, 4, 9, 6, 8, 3, 7, 4, 8]
>>> [i for i in enumerate(score)]
[(0, 1), (1, 2), (2, 4), (3, 9), (4, 6), (5, 8), (6, 3), (7, 7), (8, 4), (9, 8)]

只需一个简单的max(score) 即可。

【讨论】:

  • 是的,我尝试使用 max(),但它给了我一个错误,正如您在我的帖子更新中看到的那样,我还需要在列表中可以找到最大数量的索引,最大值只返回最大值
  • 使用score.index(max(score))获取索引:)
  • 您的传奇 非常感谢!你真的不明白你帮了我多少。生病了我如何在我的帖子上更新脚本。再次感谢,你真的帮助了这个菜鸟
  • 很高兴我能帮上忙 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 2022-01-07
相关资源
最近更新 更多