# Python program to find second largest number in a list

• 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