7

次のような原子の配列があるとします。

['a', 'b', 'c']

(長さは任意です)

そして、それらを使用して作成できるセットのリストを作成したいと思います。

[  
    ['a'], ['b'], ['c'],  
    ['a', 'b'], ['a', 'c'], ['b', 'c'],  
    ['a', 'b', 'c']  
]  

Pythonで簡単にそれを行うことは可能ですか?

たぶんそれはとても簡単ですが、私はそれを自分で理解していません。
ありがとうございました。

4

3 に答える 3

15

それは私には次のように聞こえますpowerset

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))
于 2012-04-28T22:06:20.677 に答える
4

簡単。使用itertools.combinations()

from itertools import combinations

atom = list('abc')

combs = [i for j in range(1, len(atom) + 1) for i in combinations(atom, j)]

これにより、次のようになります。

[('a',), ('b',), ('c',), ('a', 'b'), ('a', 'c'), ('b', 'c'), ('a', 'b', 'c')]
于 2012-04-28T22:15:18.280 に答える
0

次のこともできます。

from itertools import product
masks = [p for p in product([0, 1], repeat=len(data))]
combs = [[x for i, x in enumerate(data) if mask[i]] for mask in masks]
于 2012-09-10T22:59:50.430 に答える