Ricerca nel sito web

Trovare il minimo di gruppi diversi da zero utilizzando Python


Il gruppo in Python è definito da insiemi o raccolte di elementi che hanno le stesse caratteristiche in base a condizioni o operazioni specifiche. Il gruppo può essere rappresentato da elenchi, insiemi o altre strutture dati. In questa formulazione del problema, il gruppo diverso da zero si riferisce al sottoinsieme della lista in cui tutti gli elementi sono diversi da zero e adiacenti tra loro senza alcun valore zero in mezzo. In Python, abbiamo alcune funzioni integrate come list(), groupby(), lambda, ecc. che verranno utilizzate per risolvere il minimo dei gruppi diversi da zero.

Sintassi

Negli esempi viene utilizzata la seguente sintassi

list()

list() è un metodo integrato in Python che può essere utilizzato per più elementi in una singola variabile.

groupby()

Il groupby() è un metodo integrato in Python che passa il parametro per aggiungere il nome della variabile al gruppo.

lambda

La funzione lambda offre una scorciatoia per dichiarare brevi funzioni anonime utilizzando la parola chiave lambda. Le funzioni lambda si comportano quando espresse con la parola chiave def.

range()

range() è una funzione incorporata in Python che restituisce la sequenza di elementi compresi in un dato intervallo. Per impostazione predefinita, l'intervallo iniziale inizia sempre con 0 e termina assegnando un intervallo specifico.

len()

len() è una funzione incorporata in Python che restituisce la lunghezza dell'oggetto.

min()

min() è una funzione incorporata in Python che restituisce l'elemento minimo dal gruppo diverso da zero.

append()

L'append() è un metodo integrato in Python che aggiunge l'elemento alla fine della lista.

join()

join() è un metodo integrato in Python che accetta l'elemento iterabile tramite una stringa separata.

map()

In Python, la funzione map() ci consente di elaborare tutti gli elementi dalla lista e, trasformandola, itererà tutti gli elementi senza utilizzare un ciclo for esplicito.

split()

split() è una funzione incorporata in Python che separa la stringa in un elenco di stringhe.

Utilizzando itertools

Nell'esempio seguente, il programma utilizza il modulo Python itertools che aiuta a fornire un'iterazione complessa utilizzando le funzioni integrate groupby() e lambda e questi processi trovano il gruppo minimo diverso da zero.

Esempio

import itertools
def minimum_nonzero(lst):
    non_zero_groups = [list(group) for key, group in itertools.groupby(lst, key=lambda x: x != 0) if key]
    min_values = [min(group) for group in non_zero_groups]
    return non_zero_groups, min_values
# Create the non-group of list element
lst = [2, 9, 0, 0, 0, 3, 1, 0, 0, 5, 0, 0, 9, 0]
# Calling function sets to two variables
groups, min_values = minimum_nonzero(lst)
for i in range(len(groups)):
    print(f"Group: {groups[i]}, Minimum Value: {min_values[i]}")

Produzione

Group: [2, 9], Minimum Value: 2
Group: [3, 1], Minimum Value: 1
Group: [5], Minimum Value: 5
Group: [9], Minimum Value: 9

Utilizzando la funzione min() e append()

Nell'esempio seguente, il programma utilizza la funzione incorporata min() per trovare il più basso tra i gruppi diversi da zero mentre la funzione append() aggiunge l'elemento al gruppo.

Esempio

def min_group_nonzero(lst):
    def min_group(lst):
        group = []
        for num in lst:
            if num == 0:
                if group:
                    yield group, min(group)
                    group = []
            else:
                group.append(num)
        if group:
            yield group, min(group)    
    return list(min_group(lst))
# Create the list for non-zero group
lst = [1, 2, 3, 0, 0, 0, 0, 4, 5, 0, 0, 0, 23, 44, 0, 2]
# Calling function
result = min_group_nonzero(lst)
# Print the group element and minimum value from non-zero group
for group, min_value in result:
    print(f"Group: {group}, Minimum Value: {min_value}")

Produzione

Group: [1, 2, 3], Minimum Value: 1
Group: [4, 5], Minimum Value: 4
Group: [23, 44], Minimum Value: 23
Group: [2], Minimum Value: 2

Utilizzando la comprensione delle liste

Nell'esempio seguente, il programma utilizza la comprensione delle liste in cui alcune delle funzioni integrate come join(), split() e min() verranno utilizzate per trovare il gruppo minimo diverso da zero.

Esempio

def min_nonzero_groups_2(lst):
    non_zero_groups = [list(group) for group in ''.join(map(str, lst)).split('0') if group]
    min_values = [min(group) for group in non_zero_groups]
    return non_zero_groups, min_values
# Create the non-zero list
lst = [0, 0, 0, 1, 2, 9, 0, 0, 5, 2, 3]
groups, min_values = min_nonzero_groups_2(lst)
# Print the group along with minimum value
for i in range(len(groups)):
    print(f"Group Element: {groups[i]}, Minimum Value: {min_values[i]}")

Produzione

Group Element: ['1', '2', '9'], Minimum Value: 1
Group Element: ['5', '2', '3'], Minimum Value: 2

Conclusione

Il gruppo minimo diverso da zero è il compito specifico di trovare il valore minimo dall'elemento del gruppo. Sono stati utilizzati metodi come la comprensione delle liste, il modulo itertools, min() e append() per risolvere la dichiarazione del problema. Ci sono alcuni esempi di gruppi diversi da zero: analisi dei dati, elaborazione del segnale, analisi delle serie temporali, pulizia e preelaborazione dei dati, ecc.

Articoli correlati: