HOWTO · Python
Wie man alle Permutationen einer Liste in Python erzeugt
Der Artikel stellt Methoden vor, um alle Permutationen einer Liste in Python zu erzeugen
Auf dieser Seite
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]