1

リストがあります:

[0, 1, 2, 3, 4, 5]

最初のアイテムと最後のアイテムを除くすべてのアイテムを結合したいと思います。結果は、以下のリストのようにリストになります。

[[0], [0,1], [0,2], [0,3], [0,4], [0,1,2], [0,1,3] [0,1, 4], [0,2,3], [0,2,4], [0,3,4], [0,1,2,3], [0,1,2,4], [0, 2,3,4], [0,1,2,3,4]]

これどうやってするの?ありがとうございました!

4

6 に答える 6

1

まず、最初の項目を除くすべてのべき乗を計算します。「python power set」で検索すると、これを含むいくつかのヒットが得られます。具体的には言及していませんが、おそらく結果を辞書順に並べたいと思うでしょう。

これにより、必要なすべての組み合わせが得られます.eg [[], 1 , ..., [1,2,3,4,5]] (これには空のセットとセット全体が含まれることに注意してください)。[[0],[0,1],...[0,1,2,3,4,5]] のそれぞれに 0 を追加するだけです。

于 2013-08-20T12:34:35.547 に答える
0

最初の要素に加えて、すべての要素のパワーセットから最初と最後の要素を引いたものを組み合わせたものです

from itertools import chain, combinations

test = [0, 1, 2, 3, 4, 5]

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


print [test[:1] + list(c) for c in powerset(test[1:-1])]

# [[0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 1, 2], [0, 1, 3], [0, 1, 4], [0, 2, 3], [0, 2, 4], [0, 3, 4], [0, 1, 2, 3], [0, 1, 2, 4], [0, 1, 3, 4], [0, 2, 3, 4], [0, 1, 2, 3, 4]]   
于 2013-08-20T12:40:19.540 に答える
0

ここに発電機があります。

from itertools import combinations

def custom_combination_gen(l):
    start = [l[0]]
    L = l[1:-1]
    yield start
    for y in range(1, len(L)+1):
        for x in combinations(L, y):
            yield start + list(x)

コードの実行:

print list(custom_combination_gen([0,1,2,3,4,5]))
[[0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 1, 2], [0, 1, 3], [0, 1, 4], [0, 2, 3], [0, 2, 4], [0, 3, 4], [0, 1, 2, 3], [0, 1, 2, 4], [0, 1, 3, 4], [0, 2, 3, 4], [0, 1, 2, 3, 4]]
于 2013-08-20T12:41:44.837 に答える