Genera tutte le permutazioni di una lista in Python

Hassan Saeed 30 gennaio 2023 Python Python List
  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]
Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti

Articolo correlato - Python List