Signup/Sign In

Python program to find second largest number in a list

In this tutorial, we will write a Python program to find the second largest number in a list. List is an ordered set of values enclosed in square brackets [ ]. List stores some values called elements in it, which can be accessed by their particular index. We will be following various approaches to find the second largest number in a list.

For a given list of numbers, the task is to find the largest number in the list.

Input: [11, 5, 2, 8, 4, 19]

Output: 11

Input: [2, 11, 18, 23, 6]

Output: 18

Approach to find second largest number in a list

For executing this program in Python, there are multiple approaches we can follow:

  1. By sorting the list and printing the second maximum element.
  2. By removing the maximum number and then using max() function to get the second-largest number.
  3. By using the Brute-force approach.

Let us look at each approach in detail.

Approach 1: Find Second Largest

In this approach, we will first sort the elements of the list. For sorting the list we will use the predefined sort() function in Python. It will sort the elements in the list in ascending order. Then, we will print the element present at the second last position after sorting. This will be the second-largest element in the list.

Algorithm

Follow the algorithm to understand the approach better

Step 1- Declare a function for finding the second largest number

Step 2- Use sort() method to sort the list

Step 3- Return the second last element in the list after sorting using negative indexing

Step 4- Declare a list and take input or initialise values

Step 5- Call the function

Step 6- Print the value returned by the function

Python Program 1

Look at the program to understand the implementation of the above-mentioned approach.

#second largest number in list

#function
def second_largest(list):
    list.sort()
    return list[-2]

#input of list
li=[]
n=int(input("Enter size of list "))
for i in range(0,n):
    e=int(input("Enter element of list "))
    li.append(e)

#smallest
print("second largest in ",li,"is")
print(second_largest(li))           


Enter size of list 5
Enter element of list 8
Enter element of list 3
Enter element of list 1
Enter element of list 9
Enter element of list 5
second largest in [8, 3, 1, 9, 5] is
8

To get the element at the second last index we have used negative indexing.

Approach 2: By Removing the maximum number from the list

In this approach, we will first find the maximum element in the list using built-in max() function. After getting the largest number we will delete it from the list using list.remove() which will remove the element from the list. Then again call the max() function to get the current maximum number in the list. This will be the second largest element in the list.

Algorithm

Follow the algorithm to understand the approach better

Step 1- Declare a function for finding the second largest number

Step 2- Use max() method and store the value returned by it in a variable

Step 3- Remove largest element from the list

Step 4- Again call max() and store the maximum element in the variable

Step 5- Return variable, this will be the second largest element

Step 6- Declare a list and take input or initialise values

Step 7- Call the function

Step 8- Print the value returned by the function

Python Program

Look at the program to understand the implementation of the above-mentioned approach.

#second largest number in list

#function
def second_largest(list):
    large= max(list)
    list.remove(large)
    large= max(list)
    return large


#input of list
li=[]
n=int(input("Enter size of list "))
for i in range(0,n):
    e=int(input("Enter element of list "))
    li.append(e)

#smallest
print("second largest in ",li,"is")
print(second_largest(li))            


Enter size of list 4
Enter element of list 9
Enter element of list 3
Enter element of list 6
Enter element of list 1
second largest in [9, 3, 6, 1] is
6

Approach 3: Brute-force approach

In this approach, we will follow the Brute-force approach. It is an exhaustive search algorithm where all the possible test solutions are checked for getting the optimal solution.

Algorithm

Follow the algorithm to understand the approach better

Step 1- Define a function to find the second largest number in the list

Step 2- Declare variables and store the maximum nd minimum between the first and the second element in the list

Step 3- Find length of list using len() and store in n

Step 4- Run a loop from 2 to n

Step 5- Check if list element is greater than maximum, if true update second maximum to maximum and set list element as maximum

Step 6- Else, if list element is greater than second maximum number then update list element as second maximum

Step 7- Return second maximum element

Step 8- Declare a list and take input or initialise values

Step 9- Call the function

Step 10- Print the value returned by the function

Python Program

Look at the program to understand the implementation of the above-mentioned approach.

#second largest number in list
#brute-force

#function
def second_largest(list):
    maximum= max(list[0],list[1])
    second_max= min(list[0],list[1])
    n=len(list)
    for i in range(2, n):
        if list[i]>maximum:
            second_max=maximum
            maximum=list[i]
        else:
            if list[i]>second_max:
                second_max=list[i]
            
    return second_max


#input of list
li=[]
n=int(input("Enter size of list "))
for i in range(0,n):
    e=int(input("Enter element of list "))
    li.append(e)

#smallest
print("second largest in ",li,"is")
print(second_largest(li))            


Enter size of list 7
Enter element of list 3
Enter element of list 9
Enter element of list 12
Enter element of list 45
Enter element of list 2
Enter element of list 3
Enter element of list 0
second largest in [3, 9, 12, 45, 2, 3, 0] is
12

Conclusion

In this tutorial, we have discussed different approaches for finding the second largest element in the list. We have discussed three approaches- using sorted list elements to print the second last element, by removing the maximum element from the list and then finding the largest in the list and lastly, we have used the Brute-force approach to get the second largest element in the list.