Python program to find second largest number in a list
Given a list of numbers, the task is to write a Python program to find the second largest number in the given list.
Examples:
Input: list1 = [10, 20, 4] Output: 10
Input: list2 = [70, 11, 20, 4, 100] Output: 70
Method 1: Sorting is an easier but less optimal method. Given below is an O(n) algorithm to do the same.
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] elif mx = = secondmax and \ secondmax ! = list1[i]: secondmax = list1[i] print ( "Second highest number is : " ,\ str (secondmax)) |
Output
Second highest number is : 45
Method 2: Sort the list in ascending order and print the second last element in the list.
Python3
# Python program to find largest number # in a list # List of numbers list1 = [ 10 , 20 , 20 , 4 , 45 , 45 , 45 , 99 , 99 ] # Removing duplicates from the list list2 = list ( set (list1)) # Sorting the list list2.sort() # Printing the second last element print ( "Second largest element is:" , list2[ - 2 ]) |
Output
Second largest element is: 45
Method 3: By removing the max element from the list
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)) |
Output
45
Method 4: Find the max list element on inputs provided by the user
Python3
# Python program to find second largest # number in a list # creating list of integer type 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 ]) |
Output
Second largest element is: 45
Method 5: Traverse once to find the largest and then once again to find the second largest.
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] # Returning second largest element return secondLargest # Calling above method over this array set print (findLargest([ 10 , 20 , 4 , 45 , 99 ])) |
Output
45
Method 6: Using list comprehension
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)) |
Output
45