使用 For 循环在列表中查找最高值
Find highest value in a list with For loop
我有一个分数列表,我想找到列表中的最高值(在我下面的示例中,它是值 80)。
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
,它 returns [60,60,80,80]
,而我只想获得最高值 80
。
对于 scores.index(highest_score)
,它给我索引 [0,0,6,6]
,而我想获得最高值的索引 - 应该是 [6,6]
.
如何改进我的代码以获得预期的结果?
您可以通过以下方式找到最大值:
max(scores)
Returns 80
.
您的错误在于打印语句的缩进。它应该在循环之外。试试下面的代码:
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)
我还写了一个列表理解,用于查找列表中得分最高的所有索引,因为您的代码只会 return 第一次出现的索引。
输出:
80 [6, 9]
有更好的方法可以做到这一点,但是由于您想使用 for 循环来做到这一点,所以这应该可行:
scores = [60,29,60,43,10,9,80,45,23,80,56,4]
highest_score = 0
index_list = []
for i in scores:
if i >= highest_score:
highest_score = i
for i in scores:
if i == highest_score:
index_list.append(scores.index(i))
print (highest_score , index_list )
输出:
>>> 80 [6, 6]
你可以试试:
scores = [60,29,60,43,10,9,80,45,23,80,56,4]
highest_score = 0
highest_score_index=[]
for index, score in enumerate(scores):
if score > highest_score:
highest_score = score
highest_score_index.clear()
highest_score_index.append(index)
elif score == highest_score:
highest_score_index.append(index)
print (highest_score, highest_score_index )
for 单个 for 循环。
Returns:
80 [6, 9]
如果您正在寻找 [60,29,60,43,10,9,80,45,23,80,56,4]
中最高值的索引,我想您的意思是您想要:[6, 9]
.
假设您想要算法的“本机”实现而不必求助于 max()
函数,并且您想要索引,我建议您使用 enumerate(scores)
:
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)
结果:
80 [6, 9]
scores = [60,29,60,43,10,9,80,45,23,80,56,4]
highest_score = None
highest_score_indexes = []
for index, value in enumerate(scores):
if index == 0:
highest_score = value
highest_score_indexes.append(index)
else:
if highest_score > value:
pass
elif highest_score == value:
highest_score_indexes.append(index)
elif highest_score < value:
highest_score = value
highest_score_indexes = [index]
print("heighest score {}".format(highest_score))
print("heighest score indexes {}".format(highest_score_indexes`enter code here`))
我有一个分数列表,我想找到列表中的最高值(在我下面的示例中,它是值 80)。
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
,它 returns [60,60,80,80]
,而我只想获得最高值 80
。
对于 scores.index(highest_score)
,它给我索引 [0,0,6,6]
,而我想获得最高值的索引 - 应该是 [6,6]
.
如何改进我的代码以获得预期的结果?
您可以通过以下方式找到最大值:
max(scores)
Returns 80
.
您的错误在于打印语句的缩进。它应该在循环之外。试试下面的代码:
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)
我还写了一个列表理解,用于查找列表中得分最高的所有索引,因为您的代码只会 return 第一次出现的索引。
输出:
80 [6, 9]
有更好的方法可以做到这一点,但是由于您想使用 for 循环来做到这一点,所以这应该可行:
scores = [60,29,60,43,10,9,80,45,23,80,56,4]
highest_score = 0
index_list = []
for i in scores:
if i >= highest_score:
highest_score = i
for i in scores:
if i == highest_score:
index_list.append(scores.index(i))
print (highest_score , index_list )
输出:
>>> 80 [6, 6]
你可以试试:
scores = [60,29,60,43,10,9,80,45,23,80,56,4]
highest_score = 0
highest_score_index=[]
for index, score in enumerate(scores):
if score > highest_score:
highest_score = score
highest_score_index.clear()
highest_score_index.append(index)
elif score == highest_score:
highest_score_index.append(index)
print (highest_score, highest_score_index )
for 单个 for 循环。
Returns:
80 [6, 9]
如果您正在寻找 [60,29,60,43,10,9,80,45,23,80,56,4]
中最高值的索引,我想您的意思是您想要:[6, 9]
.
假设您想要算法的“本机”实现而不必求助于 max()
函数,并且您想要索引,我建议您使用 enumerate(scores)
:
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)
结果:
80 [6, 9]
scores = [60,29,60,43,10,9,80,45,23,80,56,4]
highest_score = None
highest_score_indexes = []
for index, value in enumerate(scores):
if index == 0:
highest_score = value
highest_score_indexes.append(index)
else:
if highest_score > value:
pass
elif highest_score == value:
highest_score_indexes.append(index)
elif highest_score < value:
highest_score = value
highest_score_indexes = [index]
print("heighest score {}".format(highest_score))
print("heighest score indexes {}".format(highest_score_indexes`enter code here`))