Skip to content
Related Articles

Related Articles

Python program to find second largest number in a list

View Discussion
Improve Article
Save Article
Like Article
  • Difficulty Level : Easy
  • Last Updated : 01 Jul, 2022

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


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!