[英]finding subsets of a set in python
我有一個元組。 a = ('a1','a2','a3')
。 我想找到它的所有子集,除了空集。 我的問題是:“是否有內置函數可以執行此操作?”。 它應該返回('a1'),('a2'),('a3'),('a1','a2'),('a2','a3'),('a3','a1') 。
您可以使用itertools.combinations
和itertools.chain
In [13]: from itertools import combinations, chain
In [14]: a = ('a1','a2','a3')
In [15]: list(chain(*(combinations(a, i) for i in xrange(1, len(a)))))
Out[15]: [('a1',), ('a2',), ('a3',), ('a1', 'a2'), ('a1', 'a3'), ('a2', 'a3')]
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))
以您的示例為例:
>>> list(it.chain.from_iterable(it.combinations(a, r) for r in range(1, len(a)+1)))
[('a1',), ('a2',), ('a3',), ('a1', 'a2'), ('a1', 'a3'), ('a2', 'a3'), ('a1', 'a2', 'a3')]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.