# Python program to find second largest number in a list

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:10Input: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.

Attention geek! Strengthen your foundations with the **Python Programming Foundation** Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the **Python DS** Course. And to begin with your Machine Learning Journey, join the **Machine Learning - Basic Level Course**

## 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]` `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` `, ` `4` `, ` `45` `, ` `99` `]` `# sorting the list` `list1.sort()` `# printing the second last element` `print` `(` `"Second largest element is:"` `, list1[` `-` `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 max list element on inputs provided by the user

## Python3

`# Python program to find second largest` `# number in a list` `# creating empty list` `list1 ` `=` `[]` `# asking number of elements to put in list` `num ` `=` `int` `(` `input` `(` `"Enter number of elements in list: "` `))` `# iterating till num to append elements in list` `for` `i ` `in` `range` `(` `1` `, num ` `+` `1` `):` ` ` `ele ` `=` `int` `(` `input` `(` `"Enter elements: "` `))` ` ` `list1.append(ele)` `'''` `# 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: **

Enter number of elements in list: 4 Enter elements: 12 Enter elements: 19 Enter elements: 1 Enter elements: 99 Second Largest element is: 19

**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]` ` ` `return` `secondLargest` `print` `(findLargest([` `10` `, ` `20` `, ` `4` `, ` `45` `, ` `99` `]))` |

**Output:**

45