Dada una lista, escriba un programa en Python para encontrar el número más pequeño que sea mayor que un elemento específico K.
Veamos todos los enfoques para resolver este problema, desde ingenuos hasta ingeniosos para que puedan usarse en la programación cuando sea necesario.
Método n.º 1: Método ingenuo
Usando el bucle, seguimos reiniciando la variable nombrada si encontramos que el elemento es más pequeño que el valor anterior que la variable nombrada y mayor que K.
# Python3 code to demonstrate # smallest number greater than K # using naive method # Initializing list test_list = [1, 4, 7, 5, 10] # Initializing k k = 6 # Printing original list print ("The original list is : " + str(test_list)) # Using naive method # to find smallest number # greater than K min_val = 10000000 for i in test_list : if min_val > i and i > k : min_val = i # Printing result print ("The minimum value greater than 6 is : " + str(min_val))
Producción :
The original list is : [1, 4, 7, 5, 10] The minimum value greater than 6 is : 7
Método n.º 2: usar la min()
expresión + generadormin()
devuelve el número mínimo en una secuencia y acoplarlo con una expresión generadora puede realizar esta tarea de manera mucho más concisa y, por lo tanto, más útil cuando se requiere ahorrar tiempo.
# Python3 code to demonstrate # smallest number greater than K # using min() + generator expression # Initializing list test_list = [1, 4, 7, 5, 10] # Initializing k k = 6 # Printing original list print ("The original list is : " + str(test_list)) # Using min() + generator expression # to find smallest number # greater than K min_val = min(i for i in test_list if i > k) # Printing result print ("The minimum value greater than 6 is : " + str(min_val))
Producción :
The original list is : [1, 4, 7, 5, 10] The minimum value greater than 6 is : 7
Método #3: min() + filter()
En este enfoque se utiliza un enfoque similar al método anterior, solo para filtrar los números en la lista mayores que k, filter()
en lugar de la expresión del generador. Funciona de manera similar a la anterior.
# Python3 code to demonstrate # smallest number greater than K # using min() + filter() # Initializing list test_list = [1, 4, 7, 5, 10] # Initializing k k = 6 # Printing original list print ("The original list is : " + str(test_list)) # Using min() + filter() # to find smallest number # greater than K min_val = min(filter(lambda i: i > k, test_list)) # Printing result print ("The minimum value greater than 6 is : " + str(min_val))
Producción :
The original list is : [1, 4, 7, 5, 10] The minimum value greater than 6 is : 7
Método #4: El usosort() + bisect_right()
bisect_right()
de coupled with sort()
realiza la tarea de búsqueda binaria por nosotros y, por lo tanto, es una buena opción para lograr la solución a este problema. bisect_right()
porque devuelve un número estrictamente mayor, no el número en sí mismo si está presente en la lista.
# Python3 code to demonstrate # smallest number greater than K # using sort() + bisect_right() from bisect import bisect_right # Initializing list test_list = [1, 4, 7, 5, 10] # Initializing k k = 6 # Printing original list print ("The original list is : " + str(test_list)) # Using sort() + bisect_right() # to find smallest number # greater than K test_list.sort() min_val = test_list[bisect_right(test_list, k)] # Printing result print ("The minimum value greater than 6 is : " + str(min_val))
Producción :
The original list is : [1, 4, 7, 5, 10] The minimum value greater than 6 is : 7
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA