在单元素子集

时间:2016-06-30 21:52:00

标签: python python-3.x

我想找到列表[1,2,3]的所有子集。我使用以下代码:

import itertools


def powerset(iterable):
  xs = list(iterable)
  # note we return an iterator rather than a list
  return itertools.chain.from_iterable( itertools.combinations(xs,n) for n in range(len(xs)+1) )



N_set = [1,2,3]
my_subset = list(powerset(N_set))
print(my_subset)

,输出为:

[(),(1,),(2,),(3,),(1,2),(1,3),(2,3),(1,2,3)]

但是,我不想在单元素子集之后使用逗号。我希望输出为:

[(),(1),(2),(3),(1,2),(1,3),(2,3),(1,2,3)]

我们能有什么简单的方法吗?

1 个答案:

答案 0 :(得分:1)

(1,)是1元素Python元组的语法,其唯一元素是1(1)只是1分组括号。如果您希望输出看起来像一个有效的Python数据结构,那么您的输出已经是正确的。

如果您不希望输出看起来像有效的数据结构,则需要自定义打印方式。例如,

for subset in powerset(N_set):
    if not subset:
        print('<empty>')
    else:
        print(', '.join(map(str, subset)))