首頁 > 後端開發 > Python教學 > 如何有效地產生多重集的唯一排列?

如何有效地產生多重集的唯一排列?

Linda Hamilton
發布: 2024-12-13 10:53:12
原創
836 人瀏覽過

How Can I Efficiently Generate Unique Permutations of a Multiset?

計算唯一排列

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板