Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich eindeutige Permutationen eines Multisets effizient generieren?
Eindeutige Permutationen zählen
Die Permutationsfunktion von Itertools behandelt Elemente aufgrund ihrer Position und nicht ihres Wertes als eindeutig. Dadurch können Duplikate entstehen, wie im folgenden Beispiel: [(1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1 , 1, 1), (1, 1, 1)].
Duplikate vermeiden
Die ursprüngliche Anfrage betraf eine Algorithmus, der diese Duplikate vermeidet, ohne auf Nachfilterung aufgrund der großen Anzahl beteiligter Permutationen zurückzugreifen.
Multiset Permutations in sympy
Für solche Fälle bietet Sympy die multiset_permutations an Iterator. Im Gegensatz zu Permutationen behandelt dieser Iterator Elemente aufgrund ihrer Werte und nicht ihrer Positionen als eindeutig.
Betrachten Sie die folgenden Beispiele:
>>> from sympy.utilities.iterables import multiset_permutations >>> list(multiset_permutations([1,1,1])) [[1, 1, 1]] >>> list(multiset_permutations([1,1,2])) [[1, 1, 2], [1, 2, 1], [2, 1, 1]]
Wie Sie sehen können, erzeugt multiset_permutations nur eindeutige Permutationen.
Das obige ist der detaillierte Inhalt vonWie kann ich eindeutige Permutationen eines Multisets effizient generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!