Python program to find second largest number in a list

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 2list1 = [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))
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 numberslist1 = [10, 20, 20, 4, 45, 45, 45, 99, 99] # Removing duplicates from the listlist2 = list(set(list1)) # Sorting the  listlist2.sort() # Printing the second last elementprint("Second largest element is:", list2[-2])
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 numberslist1 = [10, 20, 4, 45, 99] # new_list is a set of list1new_list = set(list1) # Removing the largest element from temp listnew_list.remove(max(new_list)) # Elements in original list are not changed# print(list1)print(max(new_list))
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 typelist1 = [10, 20, 4, 45, 99] '''# sort the list   list1.sort()     # print second maximum elementprint("Second largest element is:", list1[-2]) ''' # print second maximum element using sorted() methodprint("Second largest element is:", sorted(list1)[-2])
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 setprint(findLargest([10, 20, 4, 45, 99]))
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))
45
saurabh3299
RahulJain29
planetside2psc
tommybhatt
huzaifamalik47
hirendrakoche1
beheraprabirkumar
nagpal_chi
Python list-programs
python-list
Python
Python Programs
python-list
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Different ways to create Pandas Dataframe
Enumerate() in Python
Python String | replace()
How to Install PIP on Windows ?
*args and **kwargs in Python
Defaultdict in Python
Python | Get dictionary keys as a list
Python | Convert a list to dictionary
Python | Convert string dictionary to dictionary
Python Program for Fibonacci numbers