Python: fila con diferencia mínima en valores extremos

Dada una Array, extraiga las filas con una diferencia mínima en valores extremos.

Ejemplos:

Entrada : test_list = [[4, 10, 18], [5, 0], [1, 4, 6], [19, 2]] 
Salida : [[1, 4, 6], [5, 0]] 
Explicación : 6 – 1 = 5, 5 – 0 = 5, es la diferencia mínima entre valores extremos.
 

Entrada : test_list = [[4, 10, 18], [5, 0], [2, 4, 6], [19, 2]] 
Salida : [[2, 4, 6]] 
Explicación : 6 – 2 = 4, es la diferencia mínima.
 

Método n.º 1: usar la comprensión de listas + min()

En esto, calculamos la diferencia mínima entre los valores extremos y luego usamos la comprensión de listas para obtener una fila particular con esa diferencia de valor entre los valores extremos.

Python3

# Python3 code to demonstrate working of 
# Matrix Minimum difference in extreme values row
# Using min() + list comprehension
  
# initializing list
test_list = [[4, 10, 18], [5, 3, 10], [1, 4, 6], [19, 2]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# getting min value 
min_val = min([max(sub) - min(sub) for sub in test_list])
  
# using list comprehension to filter 
res = [sub for sub in test_list if max(sub) - min(sub) == min_val]
  
# printing result 
print("Rows with Minimum difference in extreme values : " + str(res))

Producción:

La lista original es: [[4, 10, 18], [5, 3, 10], [1, 4, 6], [19, 2]]
Filas con diferencia mínima en valores extremos: [[1, 4, 6]]

Método #2: Usar min() + comprensión de lista + filtro() + lambda

En esto, realizamos la tarea de filtrar comparando con el valor mínimo usando filter() + lambda.

Python3

# Python3 code to demonstrate working of 
# Matrix Minimum difference in extreme values row
# Using min() + list comprehension + filter() + lambda
  
# initializing list
test_list = [[4, 10, 18], [5, 3, 10], [1, 4, 6], [19, 2]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# getting min value 
min_val = min([max(sub) - min(sub) for sub in test_list])
  
# using filter() + lambda to filter 
res = list(filter(lambda sub : max(sub) - min(sub) == min_val, test_list))
  
# printing result 
print("Rows with Minimum difference in extreme values : " + str(res))

Producción:

La lista original es: [[4, 10, 18], [5, 3, 10], [1, 4, 6], [19, 2]]
Filas con diferencia mínima en valores extremos: [[1, 4, 6]]

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 *