【发布时间】:2020-09-22 05:52:08
【问题描述】:
我正在尝试找出序列中最大的 3 个值,但从我的代码中我不明白是否要输入 maximum_three([9,6,4,1,2,3,10,8,7 ]),它会给出 [6, 9, 10] 而不是 [8,9,10] 的答案。根据我的理解,根据我的代码,我将让 maximum_3 成为序列中的某个随机数,如果该数字与 maximum_2 和最大的值不同,它将替换当前的 maximum_3 数字。但是从这段代码中,如果有重复的数字,我的代码将无法工作。如何重写我的代码,以便我的代码能够找出序列中最大的三个数字并允许重复的最大数字?
允许我创建一个元组来返回我的答案和一个列表,并且不允许修改原始序列。
def largest_three(seq):
largest = seq[0]
largest_2 = seq[0]
largest_3 = seq[1]
answer = []
for num,item in enumerate(seq):
if seq[num] > largest:
largest = seq[num]
for num,item in enumerate(seq):
if seq[num] > largest_2 and not largest:
largest_2 = seq[num]
for num,item in enumerate(seq):
if seq[num] > largest_3 and not largest_2 and not largest:
largest_3 = seq[num]
answer.append(largest_3)
answer.append(largest_2)
answer.append(largest)
return answer
【问题讨论】:
-
如果您明确对列表的前三个数字进行排序,您的算法将起作用。我怀疑你的意思是
largest_3 = seq[2]而不是seq[1]。 -
我认为您还指的是
and seq[num] != largest而不是and not largest(第三个循环也是如此)。 -
如果我的回答对您有帮助,请告诉我,谢谢!
标签: python python-3.x list tuples sequence