HOWTO · Python
Genera tutte le permutazioni di una lista in Python
L'articolo introduce metodi per generare tutte le permutazioni di una lista in Python
In questa pagina
Questo tutorial discute i metodi per generare tutte le permutazioni di una lista in Python.
Usa itertools.permutations per generare tutte le permutazioni di una lista in Python
Python fornisce uno strumento di libreria standard per generare permutazioni: itertools.permutation. L’esempio seguente mostra come utilizzarlo per generare tutte le permutazioni di una lista.
import itertools
inp_list = [4, 5, 6]
permutations = list(itertools.permutations(inp_list))
print(permutations)
Produzione:
[(4, 5, 6), (4, 6, 5), (5, 4, 6), (5, 6, 4), (6, 4, 5), (6, 5, 4)]
La lunghezza predefinita della permutazione è impostata come la lunghezza dell’lista di input. Tuttavia, possiamo specificare la lunghezza della permutazione nella chiamata alla funzione itertools.permutations. L’esempio seguente lo illustra.
import itertools
inp_list = [1, 2, 3]
permutations = list(itertools.permutations(inp_list, r=2))
print(permutations)
Produzione:
[(4, 5), (4, 6), (5, 4), (5, 6), (6, 4), (6, 5)]
L’esempio seguente illustra come generare tutte le permutazioni di tutte le lunghezze possibili di un dato lista.
import itertools
inp_list = [1, 2, 3]
permutations = []
for i in range(1, len(inp_list) + 1):
permutations.extend(list(itertools.permutations(inp_list, r=i)))
print(permutations)
Produzione:
[(4,), (5,), (6,), (4, 5), (4, 6), (5, 4), (5, 6), (6, 4), (6, 5), (4, 5, 6), (4, 6, 5), (5, 4, 6), (5, 6, 4), (6, 4, 5), (6, 5, 4)]
Usa la ricorsione per generare tutte le permutazioni di una lista in Python
Possiamo anche usare la ricorsione per generare tutte le permutazioni di una lista in Python. L’esempio seguente lo illustra.
def permutations(start, end=[]):
if len(start) == 0:
print(end)
else:
for i in range(len(start)):
permutations(start[:i] + start[i + 1 :], end + start[i : i + 1])
permutations([4, 5, 6])
Produzione:
[4, 5, 6]
[4, 6, 5]
[5, 4, 6]
[5, 6, 4]
[6, 4, 5]
[6, 5, 4]