首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用For循环在列表中查找最大值

使用For循环在列表中查找最大值
EN

Stack Overflow用户
提问于 2021-05-03 01:02:47
回答 6查看 82关注 0票数 1

我有一个分数列表,我希望找到列表中的最高值(在下面的示例中,它是值80)。

代码语言:javascript
复制
scores = [60,29,60,43,10,9,80,45,23,80,56,4]

highest_score = 0

for i in scores:
    
    if i >= highest_score:
        highest_score = i
        print (highest_score, scores.index(highest_score) )

对于highest_scores,它返回[60,60,80,80],而我只想获得最高值的80。对于scores.index(highest_score),它为我提供了索引[0,0,6,6],而我希望获得最高值的索引-它应该是[6,6]

我如何改进我的代码以获得期望的结果?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2021-05-03 01:19:50

如果您正在寻找[60,29,60,43,10,9,80,45,23,80,56,4]中最高值的索引,我想您的意思是您想要:[6, 9]

假设您想要算法的“本机”实现,而不必求助于max()函数,并且您想要索引,我建议您使用enumerate(scores)

代码语言:javascript
复制
scores = [60,29,60,43,10,9,80,45,23,80,56,4]

highest_score = scores[0]
indexes = []

for i, s in enumerate(scores):
  if s > highest_score:
    indexes = []
  if s >= highest_score:
    indexes.append(i)
    highest_score = s

print(highest_score, indexes)

结果:

代码语言:javascript
复制
80 [6, 9]
票数 2
EN

Stack Overflow用户

发布于 2021-05-03 01:06:50

您可以通过以下方式找到最大值:

代码语言:javascript
复制
max(scores)

返回80

票数 1
EN

Stack Overflow用户

发布于 2021-05-03 01:09:44

您正在进行的错误是在用于打印语句的缩进中。它应该在循环之外。尝试以下代码:

代码语言:javascript
复制
scores = [60, 29, 60, 43, 10, 9, 80, 45, 23, 80, 56, 4]

highest_score = 0

for i in scores:
    if i >= highest_score:
        highest_score = I

# find all indices of the highest_score
indices = [i for i, x in enumerate(scores) if x == highest_score]
print(highest_score, indices)

我还编写了一个列表理解,用于查找列表中得分最高的所有索引,因为您的代码将只返回第一次出现的索引。

输出:

代码语言:javascript
复制
80 [6, 9]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67359024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档