Python 不使用len()和sort()查找列表中第三大元素

Python 不使用len()和sort()查找列表中第三大元素,python,list,Python,List,下面是我用来查找列表中第三大元素的代码,不使用任何内置函数,如max、sort、len list = [12, 45, 2, 41, 31, 10, 8, 6, 4] #list = [35,10,45,9,8,5] largest_1 = list[0] largest_2 = list[0] largest_3 = list[0] print (largest_1) print (largest_2) print (largest_3) for each in list: print

下面是我用来查找列表中第三大元素的代码,不使用任何内置函数,如max、sort、len

list = [12, 45, 2, 41, 31, 10, 8, 6, 4]
#list = [35,10,45,9,8,5]
largest_1 = list[0]
largest_2 = list[0]
largest_3 = list[0]
print (largest_1)
print (largest_2)
print (largest_3)
for each in list:
    print ('Each element Before if Loop --->',each)
    if each > largest_1:
        print ('Each element inside if loop --->',each)
        largest_1 = each
        print('largest_1 element---->',largest_1)
    elif largest_2 != largest_1 and largest_2 < each:
        print ('Each element inside if loop --->',each)
        largest_2 = each 
        print ('Largest_1 element is ---->',largest_1)
        print ('Largest_2 element is ---->',largest_2)
    elif largest_3 != largest_2  and largest_3 < each:
        print ('Each element inside if loop --->',each)
        largest_3 = each
        print ('Largest_2 element is ---->',largest_2)
        print ('Largest_3 element is ---->',largest_3)

print (largest_1)
print (largest_2)
print (largest_3)

我不明白我犯了什么错误。我如何解决这个问题?

我不知道为什么您不想使用
len()
max()
-它们实际上是内置函数,不是任何库的一部分,没有实际理由不使用它们。也就是说,如果你真的想做其他事情,这里有另一种方法:

取三个变量,将它们分配给
最大的
第二大的
,和
第三大的
,然后浏览列表

largest = 0
second_largest = 0
third_largest = 0

for each in list:
    if each >= largest:
        # assign the new largest, and push the rest of them back down the chain
        # we use >= instead of > to ensure that duplicate maximums still work.
        #   
        largest, second_largest, third_largest = each, largest, second_largest
    elif each >= second_largest:
        second_largest, third_largest = each, second_largest
    elif each > third_largest:
        third_largest = each
print(third_largest)

我不知道你为什么不想使用
len()
max()
——它们实际上是内置函数,不是任何库的一部分,没有实际理由不使用它们。也就是说,如果你真的想做其他事情,这里有另一种方法:

取三个变量,将它们分配给
最大的
第二大的
,和
第三大的
,然后浏览列表

largest = 0
second_largest = 0
third_largest = 0

for each in list:
    if each >= largest:
        # assign the new largest, and push the rest of them back down the chain
        # we use >= instead of > to ensure that duplicate maximums still work.
        #   
        largest, second_largest, third_largest = each, largest, second_largest
    elif each >= second_largest:
        second_largest, third_largest = each, second_largest
    elif each > third_largest:
        third_largest = each
print(third_largest)

您还可以将前3个最大数字存储在字典中,然后打印出第三个最大数字:

largest = {"first": 0, "second": 0, "third": 0}

lst = [12, 45, 2, 41, 31, 10, 8, 6, 4]

for number in lst:
    if number > largest["first"]:
        largest["third"] = largest["second"]
        largest["second"] = largest["first"]
        largest["first"] = number
    elif number > largest["second"]:
        largest["third"] = largest["second"]
        largest["second"] = number
    elif number > largest["third"]:
        largest["third"] = number

print(largest)
# {'first': 45, 'second': 41, 'third': 31}

print(largest["third"])
# 31

您还可以将前3个最大数字存储在字典中,然后打印出第三个最大数字:

largest = {"first": 0, "second": 0, "third": 0}

lst = [12, 45, 2, 41, 31, 10, 8, 6, 4]

for number in lst:
    if number > largest["first"]:
        largest["third"] = largest["second"]
        largest["second"] = largest["first"]
        largest["first"] = number
    elif number > largest["second"]:
        largest["third"] = largest["second"]
        largest["second"] = number
    elif number > largest["third"]:
        largest["third"] = number

print(largest)
# {'first': 45, 'second': 41, 'third': 31}

print(largest["third"])
# 31

@文卡特:这里有另一个建议,不使用
len()
sort()
就可以从列表中获得第三大数字


@文卡特:这里有另一个建议,不使用
len()
sort()
就可以从列表中获得第三大数字


可能重复@GaneshK,嘿,伙计,我不想在我的代码中使用任何max。这不是重复的问题。您的问题没有说明任何地方。@venkat您不能使用任何库吗?@venkat将您的
maximum_2和maximum_3
等于
0
,您就完成了!可能重复@GaneshK,嘿,伙计,我不想在我的代码中使用任何max。这不是重复的问题。您的问题没有说明任何地方。@venkat您不能使用任何库吗?@venkat将您的
maximum_2和maximum_3
等于
0
,您就完成了!