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:
- By sorting the list and printing the second maximum element.
- By removing the maximum number and then using max() function to get the second-largest number.
- 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.