Programa de Python para encontrar el segundo número más grande en una lista

Dada una lista de números, la tarea es escribir un programa Python para encontrar el segundo número más grande en la lista dada.

Ejemplos: 

Entrada: list1 = [10, 20, 4]
Salida: 10

Entrada: list2 = [70, 11, 20, 4, 100]
Salida: 70

Método 1: La clasificación es un método más fácil pero menos óptimo. A continuación se muestra un algoritmo O(n) para hacer lo mismo. 

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))
Producción

Second highest number is :  45

Método 2: ordene la lista en orden ascendente e imprima el penúltimo elemento de la lista.

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])
Producción

Second largest element is: 45

Método 3: eliminando el elemento máximo de la lista 

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))
Producción

45

Método 4: encuentre el elemento de la lista máxima en las entradas proporcionadas por el usuario 

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])
Producción

Second largest element is: 45

Método 5: Recorra una vez para encontrar el más grande y luego una vez más para encontrar el segundo más grande. 

Python3

def findLargest(arr):
    secondLargest = 0
    largest = min(arr)
 
    for i in range(len(arr)):
        if arr[i] > largest:
            secondLargest = largest
            largest = arr[i]
        else:
            secondLargest = max(secondLargest, arr[i])
 
    # Returning second largest element
    return secondLargest
 
 
# Calling above method over this array set
print(findLargest([10, 20, 4, 45, 99]))
Producción

45

Método 6 : Usar la comprensión de listas

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))
Producción

45

Método: Usando la función lambda

Python3

# python code to print second largest element in list
 
lst = [10, 20, 4, 45, 99]
maximum1 = max(lst)
maximum2 = max(lst, key=lambda x: min(lst)-1 if (x == maximum1) else x)
print(maximum2)
Producción

45

Publicación traducida automáticamente

Artículo escrito por Shivam_k y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *