我制作了一个方法,该方法试图在没有指针的整数列表中查找第二大数字。当我传递具有第二大数字并排在第二大数字之前的任何整数列表时,我没有得到预期的结果。例如,当我通过[2, 6, 6, 2, 11]
时,将得到输出:
Largest: 11
Second Largest: 2
由于以下这一行,6
从未分配给second_max
:
elif j > second_max and first_max != j:
如果删除第二个条件,则该方法可能会将重复项分配给first_max
和second_max
,而不会输出实际的第二大数字。
first_max=float('-inf')
second_max=float('-inf')
for i,j in enumerate(nums):
if j > first_max:
first_max=j
elif j > second_max and first_max != j:
second_max=j
if first_max == float('-inf'):
first_max,second_max=None,None
elif second_max == float('-inf'):
second_max=None
print("Largest: {}".format(first_max))
print("Second Largest: {}".format(second_max))
希望对此有所帮助。
编辑:我知道有一个与此类似的帖子,但是它不能回答我处理重复项的问题。我希望该方法仅将重复项评估为一个数字。
此[5,5,4,2]和[2、6、6、2、11]的输出分别为:
最大:5 第二大:4
最大:11 第二大:6
答案 0 :(得分:0)
当您找到新的first_max时,如@Thierry所提示的那样,旧的first_max应该变为second_max。
答案 1 :(得分:0)
如上一个答案所述。我还删除了枚举函数,因为它没有添加任何有用的东西。
nums = [1.0, 3.6, 2.2, 7.3, 5.1, 9.6, 1.1]
first_max=float('-inf')
second_max=float('-inf')
for j in nums:
if j > first_max:
second_max = first_max
first_max=j
elif second_max < j and j < first_max:
second_max = j
if first_max == float('-inf'):
first_max,second_max=None,None
elif second_max == float('-inf'):
second_max=None
print("Largest: {}".format(first_max))
print("Second Largest: {}".format(second_max))