Python | Encuentra el elemento más pequeño mayor que K

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 + generador
min() 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

Deja una respuesta

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