Wie man alle Permutationen einer Liste in Python erzeugt

Hassan Saeed 30 Januar 2023
  1. Verwenden Sie itertools.permutations, um alle Permutationen einer Liste in Python zu erzeugen
  2. Rekursion verwenden, um alle Permutationen einer Liste in Python zu erzeugen
Wie man alle Permutationen einer Liste in Python erzeugt

In diesem Tutorial werden Methoden besprochen, um alle Permutationen einer Liste in Python zu erzeugen.

Verwenden Sie itertools.permutations, um alle Permutationen einer Liste in Python zu erzeugen

Python bietet ein Standard-Bibliothekstool zur Erzeugung von Permutationen: itertools.permutation. Das untenstehende Beispiel zeigt, wie man dies verwendet, um alle Permutationen einer Liste zu erzeugen.

import itertools

inp_list = [4, 5, 6]
permutations = list(itertools.permutations(inp_list))
print(permutations)

Ausgabe:

[(4, 5, 6), (4, 6, 5), (5, 4, 6), (5, 6, 4), (6, 4, 5), (6, 5, 4)]

Die Standardlänge der Permutation wird auf die Länge der Eingabeliste gesetzt. Wir können jedoch die Länge der Permutation im Funktionsaufruf itertools.permutations angeben. Das folgende Beispiel veranschaulicht dies.

import itertools

inp_list = [1, 2, 3]
permutations = list(itertools.permutations(inp_list, r=2))
print(permutations)

Ausgabe:

[(4, 5), (4, 6), (5, 4), (5, 6), (6, 4), (6, 5)]

Das folgende Beispiel veranschaulicht, wie alle Permutationen aller möglichen Längen einer gegebenen Liste erzeugt werden können.

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)

Ausgabe:

[(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)]

Rekursion verwenden, um alle Permutationen einer Liste in Python zu erzeugen

Wir können auch die Rekursion verwenden, um alle Permutationen einer Liste in Python zu erzeugen. Das folgende Beispiel veranschaulicht dies.

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])

Ausgabe:

[4, 5, 6]
[4, 6, 5]
[5, 4, 6]
[5, 6, 4]
[6, 4, 5]
[6, 5, 4]

Verwandter Artikel - Python List