Combinazioni di una lista in Python

Samyak Jain 30 gennaio 2023
  1. Usa la funzione itertools.combinations() per trovare le combinazioni di una lista in Python
  2. Usa la funzione itertools.combinations_with_replacement() per trovare le combinazioni di un elenco in Python
  3. Crea una funzione powerset() definita dall’utente per trovare le combinazioni di un elenco in Python
Combinazioni di una lista in Python

Una combinazione è una tecnica che determina il numero di possibili disposizioni in una raccolta di elementi. In una combinazione di elementi, gli elementi vengono selezionati in un ordine arbitrario.

In questo tutorial, troveremo le combinazioni totali degli elementi di una lista in Python.

Usa la funzione itertools.combinations() per trovare le combinazioni di una lista in Python

La funzione combinations(list_name, x) del modulo itertools prende il nome della lista e un numero ‘x’ come parametri e restituisce una lista di tuple ciascuna di lunghezza ‘x’ contenente tutte le possibili combinazioni di un elemento in la lista con gli altri elementi.

Per esempio,

from itertools import combinations

A = [10, 5, "Hi"]
temp = combinations(A, 2)
for i in list(temp):
    print(i)

Produzione:

(10, 5)
(10, 'Hi')
(5, 'Hi')

Un elenco ordinato produrrà le tuple di combinazione in ordine ordinato. Una combinazione di un elemento nella lista con se stesso non è possibile utilizzando la funzione combinations().

Usa la funzione itertools.combinations_with_replacement() per trovare le combinazioni di un elenco in Python

La funzione combinations_with_replacement(list_name, x) del modulo itertools prende il nome della lista e un numero ‘x’ come parametri e restituisce un elenco di tuple ciascuna di lunghezza ‘x’ contenente tutte le possibili combinazioni degli elementi della lista. Utilizzando questa funzione è possibile una combinazione di un elemento della lista con se stesso.

Per esempio,

from itertools import combinations_with_replacement

A = [1, 5, "Hi"]
temp = combinations_with_replacement(A, 2)
for i in list(temp):
    print(i)

Produzione:

(1, 1)
(1, 5)
(1, 'Hi')
(5, 5)
(5, 'Hi')
('Hi', 'Hi')

Crea una funzione powerset() definita dall’utente per trovare le combinazioni di un elenco in Python

In matematica, un insieme di potenze di qualsiasi insieme è un insieme che contiene tutti i possibili sottoinsiemi di un dato insieme insieme a un insieme vuoto. L’insieme delle potenze dell’insieme S = {2, 5, 10} è {{}, {2}, {5}, {10}, {2, 5}, {2, 10}, {5, 10}, {2, 5, 10}}. La seguente funzione powerset() viene utilizzata per scorrere tutte le lunghezze ‘r’ della lista e stampare tutte le possibili combinazioni degli elementi della lista.

Per esempio,

from itertools import chain, combinations


def powerset(list_name):
    s = list(list_name)
    return chain.from_iterable(combinations(s, r) for r in range(len(s) + 1))


A = [60, 7, "Hi"]
for x in powerset(A):
    print(x)

Produzione:

()
(1,)
(5,)
('Hi',)
(1, 5)
(1, 'Hi')
(5, 'Hi')
(1, 5, 'Hi')

Articolo correlato - Python List