2016-06-30 18 views
-1

リスト[1,2,3]のすべてのサブセットを検索したい。1つの要素のサブセットの末尾にコンマの付いていないリストのすべてのサブセット

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、Iは、次のコードを使用します3)、(2、3)、(1、2、3)]

しかし、私は1つの要素のサブセットの後にコンマを持っている必要はありません。出力は次のようになります。

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

私たちはそれを得る簡単な方法はありますか?

+2

私はあなたがあなたが求めているものを理解していることはよく分からない... '(1、)'のpythonは、単一の要素を持つタプルを出力する方法です。あなたはそれが印刷されている方法にだけ関心がありますか?または、出力データ構造を変更したいですか?後者の場合は、正確にどのような違いがありますか? – mgilson

+0

カンマが欲しいのはなぜですか?これは、Pythonタプルの構文です。 –

+0

@mgilsonタプルについて知っています。私はちょうどそれが印刷される方法を変更したい。 –

答えて

1

(1,)は、要素が1の1要素のPythonタプルの構文です。 (1)はグループ化括弧内でちょうど1です。あなたの出力が有効なPythonデータ構造のように見えるようにするには、あなたの出力はすでに正しいです。

あなたの出力が有効なデータ構造のように見えるしたくない場合、あなたはそれを印刷している方法をカスタマイズする必要があります。例えば、

for subset in powerset(N_set): 
    if not subset: 
     print('<empty>') 
    else: 
     print(', '.join(map(str, subset))) 
関連する問題