從列表中透過重複取得排列
嘗試使用排列從清單產生所有可能的組合時,通常會遇到以下問題排除重複。在這種情況下,您的目標是擲兩個骰子產生全部 36 種結果,包括具有相同數字的配對。
要解決此限制,有必要利用笛卡爾積的概念。兩個集合的笛卡爾積表示這些集合的直接乘積。在這種情況下,包含[1, 2, 3, 4, 5, 6] 及其自身的集合的笛卡爾積將為{1, 2, 3, 4, 5, 6} x {1, 2, 3, 4 , 5, 6}.
Python 標準函式庫提供了itertools 模組,該模組提供計算笛卡爾積的功能。透過使用乘積方法並指定重複參數和所需的重複次數(例如,repeat=2),您可以產生包括重複在內的所有可能的組合。
例如:
import itertools die_faces = [1, 2, 3, 4, 5, 6] result = [p for p in itertools.product(die_faces, repeat=2)]
此代碼將產生以下輸出:
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]
此結果包括擲兩個骰子的所有36 種可能結果,確保重複已計算在內。
以上是如何從 Python 列表中產生所有具有重複的排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!