Python: encuentre el mínimo de grupos distintos de cero

Muchas veces necesitamos obtener el mínimo de no toda la lista sino solo una parte de ella ya intervalos regulares. Estos intervalos a veces se deciden estáticamente antes del recorrido, pero a veces, la restricción es más dinámica y, por lo tanto, necesitamos manejarla de una manera más compleja. Los criterios discutidos aquí son un mínimo de grupos distintos de cero. Analicemos ciertas formas en que se puede realizar esta tarea.

Método #1: Uso de bucles
Esta tarea se puede realizar usando la fuerza bruta usando los bucles. Simplemente recorremos la lista de cada elemento para probar si su elemento siguiente tiene un valor distinto de cero y realizamos el mínimo una vez que encontramos que el siguiente valor es cero y lo agregamos en la lista de resultados.

# Python3 code to demonstrate
# Natural Numbers Minimum
# Using loops
  
# initializing list
test_list = [4, 9, 0, 0, 3, 4, 5, 0, 0, 4, 0]
  
# printing original list
print("The original list : " + str(test_list))
  
# using loops
# Natural Numbers Minimum
res = []
val = 99999
for ele in test_list:
    if ele == 0:
        if val != 99999:
            res.append(val)
            val = 99999
    else:
        val = min(val, ele)
  
# print result
print("The non-zero group Minimum of list is : " + str(res))
Producción :

The original list : [4, 9, 0, 0, 3, 4, 5, 0, 0, 4, 0]
The non-zero group Minimum of list is : [4, 3, 4]

Método n.º 2: usaritertools.groupby() + min()
Esta tarea en particular también se puede realizar usando la función groupby para agrupar todos los valores distintos de cero y la función min se puede usar para realizar su mínimo.

# Python3 code to demonstrate
# Natural Numbers Minimum
# Using itertools.groupby() + min()
from itertools import groupby
  
# initializing list
test_list = [4, 9, 0, 0, 3, 4, 5, 0, 0, 4, 0]
  
# printing original list
print("The original list : " + str(test_list))
  
# using itertools.groupby() + min()
# Natural Numbers Minimum
res = [min(val) for keys, val in groupby(test_list, key = lambda x: x != 0) if keys != 0]
  
# print result
print("The non-zero group minimum of list is : " + str(res))
Producción :

The original list : [4, 9, 0, 0, 3, 4, 5, 0, 0, 4, 0]
The non-zero group Minimum of list is : [4, 3, 4]

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 *