[英]How do I make a powerset from an arbitrary set in python?
今天,我有一個實驗室,准備從任意大小的電源制造電源組,但是我似乎沒有想到最佳的制作方法。 班上沒有人做過Python。 只做java
在itertools
有一個配方:
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))
洞察力是,對於冪集中的每個集合S,原始集合的給定成員要么在S中,要么不在。 由於這是一個二進制決策,因此對於原始集中的每個其他元素,powerset都會加倍。
powerset({a}) = {{}, {a}}
powerset({a,b}) = {{}, {a}, {b}, {a,b}}
powerset({a,b,c}) = union(
powerset({a,b}),
union({c}, X) where X in powerset({a,b})
)
這就導致了一種不錯的遞歸算法,只要任意值不太大,該算法就可用於“任意大小”集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.