Genera tutte le permutazioni di una lista in Python

Hassan Saeed 30 gennaio 2023
  1. Usa itertools.permutations per generare tutte le permutazioni di una lista in Python
  2. Usa la ricorsione per generare tutte le permutazioni di una lista in Python
Genera tutte le permutazioni di una lista in Python

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]

Articolo correlato - Python List