簡體   English   中英

在python中查找集合的子集

[英]finding subsets of a set in python

我有一個元組。 a = ('a1','a2','a3') 我想找到它的所有子集,除了空集。 我的問題是:“是否有內置函數可以執行此操作?”。 它應該返回('a1'),('a2'),('a3'),('a1','a2'),('a2','a3'),('a3','a1') 。

您可以使用itertools.combinationsitertools.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')]

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))

以您的示例為例:

>>> 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM