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: 10Entrada: 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))
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])
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))
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])
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]))
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))
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)
45