Alle Permutationen einer Liste generieren
Anhand einer Liste von Elementen besteht die Aufgabe darin, alle möglichen Permutationen der Elemente zu generieren. Permutationen sind verschiedene Kombinationen der Elemente in der Liste.
Standardbibliothekslösung
Die Python-Standardbibliothek stellt für diesen Zweck die Funktion itertools.permutations bereit:
import itertools list(itertools.permutations([1, 2, 3]))
Dieser Code generiert alle Permutationen der Liste [1, 2, 3] und gibt sie als Liste von zurück Tupel.
Alternative Implementierungen
Hier ist eine alternative Implementierung einer Permutationsfunktion mit Rekursion:
def permutations(elements): if len(elements) <= 1: yield elements return for perm in permutations(elements[1:]): for i in range(len(elements)): yield perm[:i] + elements[0:1] + perm[i:]
Diese Implementierung erstellt Permutationen durch iteratives Addieren das erste Element der Liste an unterschiedliche Positionen in den Permutationen der übrigen Elemente.
Ein weiterer alternativer Ansatz verwendet itertools.product:
def permutations(iterable, r=None): pool = tuple(iterable) n = len(pool) r = n if r is None else r for indices in product(range(n), repeat=r): if len(set(indices)) == r: yield tuple(pool[i] for i in indices)
Diese Implementierung iteriert über alle möglichen Kombinationen von Indizes von 0 bis n-1 (wobei n die Listenlänge ist) und generiert eine Permutation aus jeder Kombination, wenn die Indizes eindeutig sind (was anzeigt, dass jedes Element in der Liste einmal enthalten ist).
Das obige ist der detaillierte Inhalt vonWie kann ich alle Permutationen einer Liste in Python generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!