我想找到列表[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)]
我们能有什么简单的方法吗?
答案 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)))