Python程序如何实现在列表中查找第二大数字?

2021年3月28日16:03:44 发表评论 1,739 次浏览

本文概述

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

例子:

Input: list1 = [10, 20, 4]
Output: 10

Input: list2 = [70, 11, 20, 4, 100]
Output: 70

方法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))

输出如下

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 empty list
list1 = []
 
# asking number of elements to put in list
num = int ( input ( "Enter number of elements in list: " ))
 
# iterating till num to append elements in list
for i in range ( 1 , num + 1 ):
     ele = int ( input ( "Enter elements: " ))
     list1.append(ele)
 
'''
# 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 ])

输出如下:

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

首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: