計算唯一排列
Itertools 的排列函數根據元素的位置(而不是值)將元素視為唯一。因此,可能會出現重複項,例如提供的例子:[(1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1 , 1 , 1), (1, 1, 1)]。
避免重複
最初的請求是為了避免這些重複的演算法,由於涉及大量排列而無需訴諸後過濾。
sympy 中的多重排列
對於這種情況,sympy 提供了 multiset_permutations 迭代器。與排列不同,此迭代器根據元素的值而不是位置將元素視為唯一。
考慮以下範例:
>>> 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]]
如您所見,multiset_permutations 僅產生唯一的排列。
以上是如何有效地產生多重集的唯一排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!