Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich alle Permutationen einer Liste in Python generieren?

Wie kann ich alle Permutationen einer Liste in Python generieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-22 13:15:12925Durchsuche

How Can I Generate All Permutations of a List in Python?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn