📜  Python程序在列表中查找第二大数字

📅  最后修改于: 2022-05-13 01:55:42.853000             🧑  作者: Mango

Python程序在列表中查找第二大数字

给定一个数字列表,任务是编写一个Python程序来查找给定列表中的第二大数字。
例子:

方法 1:排序是一种更简单但不太理想的方法。下面给出了一个 O(n) 算法来做同样的事情。

Python3
# Python program to find second largest
# number in a list
 
# list of numbers - length of
# list should be at least 2
list1 = [10, 20, 4, 45, 99]
 
mx=max(list1[0],list1[1])
secondmax=min(list1[0],list1[1])
n =len(list1)
for i in range(2,n):
    if list1[i]>mx:
        secondmax=mx
        mx=list1[i]
    elif list1[i]>secondmax and \
        mx != list1[i]:
        secondmax=list1[i]
 
print("Second highest number is : ",\
      str(secondmax))


Python3
# Python program to find largest
# number in a list
 
# list of numbers
list1 = [10, 20, 4, 45, 99]
 
# sorting the list
list1.sort()
 
# printing the second last element
print("Second largest element is:", list1[-2])


Python3
# Python program to find second largest
# number in a list
 
# list of numbers
list1 = [10, 20, 4, 45, 99]
 
# new_list is a set of list1
new_list = set(list1)
 
# removing the largest element from temp list
new_list.remove(max(new_list))
 
# elements in original list are not changed
# print(list1)
 
print(max(new_list))


Python3
# Python program to find second largest
# number in a list
 
# creating list
list1 = [10, 20, 4, 45, 99]
 
'''
# sort the list   
list1.sort()
     
# print second maximum element
print("Second largest element is:", list1[-2])
 
'''
 
# print second maximum element using sorted() method
print("Second largest element is:", sorted(list1)[-2])


Python3
def findLargest(arr):
    secondLargest = arr[0]
    largest = arr[0]
    for i in range(len(arr)):
        if arr[i] > largest:
            largest = arr[i]
 
    for i in range(len(arr)):
        if arr[i] > secondLargest and arr[i] != largest:
            secondLargest = arr[i]
 
    return secondLargest
 
 
print(findLargest([10, 20, 4, 45, 99]))


Python3
def secondmax(arr):
  sublist = [x for x in arr if x < max(arr)]
  return max(sublist)
 
if __name__ == '__main__':
  arr = [10, 20, 4, 45, 99]
  print(secondmax(arr))


输出
Second highest number is :  45

方法2:按升序对列表进行排序,并打印列表中倒数第二个元素。

Python3

# Python program to find largest
# number in a list
 
# list of numbers
list1 = [10, 20, 4, 45, 99]
 
# sorting the list
list1.sort()
 
# printing the second last element
print("Second largest element is:", list1[-2])
输出
Second largest element is: 45

方法 3:通过从列表中删除最大元素

Python3

# Python program to find second largest
# number in a list
 
# list of numbers
list1 = [10, 20, 4, 45, 99]
 
# new_list is a set of list1
new_list = set(list1)
 
# removing the largest element from temp list
new_list.remove(max(new_list))
 
# elements in original list are not changed
# print(list1)
 
print(max(new_list))
输出
45

方法 4:在用户提供的输入上查找最大列表元素

Python3

# Python program to find second largest
# number in a list
 
# creating list
list1 = [10, 20, 4, 45, 99]
 
'''
# sort the list   
list1.sort()
     
# print second maximum element
print("Second largest element is:", list1[-2])
 
'''
 
# print second maximum element using sorted() method
print("Second largest element is:", sorted(list1)[-2])
输出
Second largest element is: 45

输出:

Enter number of elements in list: 4
Enter elements: 12
Enter elements: 19
Enter elements: 1
Enter elements: 99
Second Largest element is: 19

方法5:遍历一次找到最大的,然后再遍历一次找到第二大的。

Python3

def findLargest(arr):
    secondLargest = arr[0]
    largest = arr[0]
    for i in range(len(arr)):
        if arr[i] > largest:
            largest = arr[i]
 
    for i in range(len(arr)):
        if arr[i] > secondLargest and arr[i] != largest:
            secondLargest = arr[i]
 
    return secondLargest
 
 
print(findLargest([10, 20, 4, 45, 99]))
输出
45

方法 6 :使用列表推导

Python3

def secondmax(arr):
  sublist = [x for x in arr if x < max(arr)]
  return max(sublist)
 
if __name__ == '__main__':
  arr = [10, 20, 4, 45, 99]
  print(secondmax(arr))
输出
45