Ricerca nel sito web

Python: trova la somma minima delle coppie nell'elenco


La somma minima della coppia viene definita trovando la somma più piccola possibile di due numeri presi da un dato elenco di numeri. Può essere utilizzato per risolvere sfide quando è importante ridurre al minimo il totale di due elementi, ad esempio ridurre il costo, la distanza o il tempo necessario per una determinata operazione. In Python, abbiamo alcune funzioni integrate come float(), sort(), combinazioni() e range() che verranno utilizzate per trovare la somma minima delle coppie in una lista.

Sintassi

Negli esempi viene utilizzata la seguente sintassi:

float('inf')

float() è un metodo integrato in Python che accetta il parametro per impostare il grande valore infinito.

sort()

sort() è un metodo integrato in Python che per impostazione predefinita ordina il numero in ordine crescente.

combinations()

Questo è un metodo integrato in Python che segue il modulo itertools di Python che raccoglie l'ordine della lista degli elementi ma l'ordine non ha importanza. Aiuta a impostare le possibilità della coppia.

len()

Questo len() è un metodo integrato in Python che restituisce la lunghezza dell'oggetto.

Utilizzo di Nested for Loop

Il programma utilizza la funzione ricorsiva in cui i cicli ripetono gli elenchi per trovare la coppia minima lungo sum().

Esempio

Nell'esempio seguente, il programma inizia con la funzione denominata min_pair che accetta i parametri num per ricevere il valore dell'elenco di input. In questa funzione vengono inizializzate due variabili min_sum e min_pair. min_sum viene inizializzato su infinito positivo utilizzando float('inf') e min_pair viene inizializzato su una tupla vuota. Successivamente, due cicli annidati eseguono l'iterazione su tutte le coppie intere nell'elenco. Quindi utilizzare l'istruzione if, dove la somma della coppia è inferiore a somma_min, somma_min viene modificata in base alla nuova somma della coppia e coppia_min viene modificata per rappresentare la coppia corrente di numeri. Dopo aver controllato tutti gli accoppiamenti, la funzione restituisce sia la somma minima che la coppia minima. Andando avanti per creare gli interi dell'elenco di input nella variabile num. Quindi utilizzare la chiamata di funzione in due variabili: r_sum e res_pair. Infine, stiamo utilizzando le stesse variabili come parametro della funzione print per ottenere il risultato.

def min_pair(nums):
    min_sum = float('inf')
    min_pair = ()
    for i in range(len(nums)):
        for j in range(i + 1, len(nums)):
            pair_sum = nums[i] + nums[j]
            if pair_sum < min_sum:
                min_sum = pair_sum
                min_pair = (nums[i], nums[j])
    return min_sum, min_pair

# create the list
num = [40, 21, 91, 50, 11]
r_sum, res_pair = min_pair(num)
print("Minimum pair sum of the list:", r_sum)
print("Pair is:", res_pair)

Produzione

Minimum pair sum of the list: 32
Pair is: (21, 11)

Utilizzo dell'ordinamento

Il programma utilizza la funzione sort() e applica la somma all'elemento indice delle liste, che aiuterà a trovare la somma minima della coppia.

Esempio

Nell'esempio seguente, avvia il programma con min_pair che accetta un elenco di numeri come parametro. Nella funzione, la funzione incorporata sort viene utilizzata per ordinare l'elenco di numeri. I primi due elementi dell'elenco ordinato vengono sommati per determinare la somma minima. I primi due elementi dell'elenco ordinato vengono convertiti in una tupla per fornire la coppia minima. Sia la coppia minima che la somma minima vengono restituite dalla funzione. Successivamente, crea l'elenco e memorizzalo nella variabile num. Quindi chiama la funzione denominata min_pair nelle variabili r_sum e r_pair. Andiamo avanti e utilizziamo le stesse variabili nella funzione print per ottenere il risultato.

def min_pair(nums):
    nums.sort()
    min_sum = nums[0] + nums[1]
    min_pair = (nums[0], nums[1])
    return min_sum, min_pair
# create the list  
num = [11, 10, 9, 5, 1]
r_sum, res_pair = min_pair(num)
print("Minimum pair sum from the list:", r_sum)
print("Pair is:", res_pair)

Produzione

Minimum pair sum from the list: 6
Pair is: (1, 5)

Utilizzando sum() e tuple()

Il programma utilizza sum() per aggiungere la coppia minima dalla lista e utilizzando il metodo integrato tuple imposterà il risultato della coppia minima sotto forma di tupla.

Esempio

Nell'esempio seguente, il programma inizia con una funzione denominata min_pair_sum che accetta i parametri num per ricevere i valori dell'elenco dalla variabile num (tramite la chiamata alla funzione). In questa funzione l'elenco è ordinato in ordine crescente. Aggiungendo i primi due elementi all'elenco ordinato verrà calcolata la somma minima. L'elenco ordinato dei primi due elementi è stato convertito in una tupla per fornire la coppia minima. Quindi la funzione restituisce la coppia minima e la somma minima. Successivamente, memorizza l'elenco di input nella variabile num. Quindi accetta la variabile num nella chiamata di funzione denominata min_pair_sum e la memorizza nelle variabili - r_sum e res_pair. Infine, stampiamo il risultato della coppia minima e della somma minima.

def min_pair_sum(nums):
    sorted_nums = sorted(nums)
    min_sum = sum(sorted_nums[:2])
    min_pair = tuple(sorted_nums[:2])
    return min_sum, min_pair
# Create the List
num = [10, 11, 12, 13, 14]
r_sum, res_pair = min_pair_sum(num)
print("Minimum pair sum:", r_sum)
print("Pair:", res_pair)

Produzione

Minimum pair sum: 21
Pair: (10, 11)

Utilizzando itertools.combination

Questo programma utilizza la funzione combinazioni() del modulo itertools per generare tutte le possibili coppie di numeri da un dato elenco. Quindi trova la coppia con la somma più bassa e restituisce entrambe le somme lungo la sua coppia.

Esempio

Nell'esempio seguente, utilizzando la funzione combinazioni del modulo itertools, la funzione find_min_pair_sum genera tutte le possibili coppie di numeri dall'elenco fornito. Quindi scorre tutti gli accoppiamenti per trovare la coppia con la somma minima e restituisce sia la somma minima che la coppia minima. Quindi la funzione chiamante passa i numeri sotto forma di elenco e restituisce il risultato.

from itertools import combinations
def find_min_pair_sum(nums):
    pairs = combinations(nums, 2)
    min_sum = float('inf')
    min_pair = ()
    for pair in pairs:
        pair_sum = sum(pair)
        if pair_sum < min_sum:
            min_sum = pair_sum
            min_pair = pair
    return min_sum, min_pair
# Create the list
numbers = [4, 2, 9, 5, 1]
result_sum, result_pair = find_min_pair_sum(numbers)
print("Minimum pair sum:", result_sum)
print("Pair:", result_pair)

Produzione

 Minimum pair sum: 3
Pair: (2, 1)

Conclusione

Abbiamo discusso i vari metodi per risolvere la dichiarazione del problema. Trovare la somma delle coppie più piccole in un elenco è essenziale per varie applicazioni, come l'ottimizzazione dei costi, i calcoli delle distanze e l'analisi dell'efficienza temporale nei lavori di risoluzione dei problemi e di elaborazione dei dati.

Articoli correlati: