如何使用itertools.combinations 產生集合的所有子集
在Python 中,itertools.combinations 模組提供了一個簡單且高效的模組方法用於產生集合的冪集。具體操作方法如下:
from itertools import chain, combinations def powerset(iterable): "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
例如,要尋找集合{0, 1, 2, 3} 的所有子集,您可以使用以下程式碼:
>>> list(powerset([0, 1, 2, 3])) [(), (0,), (1,), (2,), (3,), (0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3), (0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3), (0, 1, 2, 3)]
請注意,空元組() 包含在冪集中,因為它代表空子集。
如果您不想擁有結果中的空元組,您可以修改組合循環中的範圍,如下所示:
def powerset(iterable): "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(1, len(s)+1))
這將從返回的子集中排除空元組。
以上是如何使用 Python 的「itertools.combinations」產生集合的所有子集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!