python:通过循环集的子集创建迭代器

时间:2013-11-30 06:03:41

标签: python

我有一系列连续的整数,例如[1, 2, 3]。我想创建一个遍历集合的所有子集的迭代器。在这种情况下[], [1],...,[1,2,3]。我怎么能这样做?

1 个答案:

答案 0 :(得分:8)

itertools documentation包含名称为powerset的此构造的配方,如果这是您需要的。

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