1

特定の制約を持つリストのすべての組み合わせを出力しようとしています:

長さ x とドメイン 1 から y までのすべての組み合わせを出力する必要があります。

たとえば、x=3、ドメイン y=4 とします。1 から 4 のすべての可能な組み合わせを 3 つのメンバーで生成する必要があります。繰り返しはありません。

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

これは y を選択する必要があることはわかっていますが、すべての組み合わせを見つけるためにループする方法を理解するのは難しいです。

itertools を使用して、特定のリストの長さ x のすべての組み合わせを生成する方法を知っています。

import itertools
print list(itertools.combinations([1,2,3],2))

しかし、特定のドメインとのすべての組み合わせをどのように生成すればよいかわかりません。

4

1 に答える 1

3

1 から までのリストを作成するにはy、 を使用しますrange(1, y+1)。この知識があれば、現在のitertools知識を問題に適用するのは非常に簡単です。

import itertools
print list(itertools.combinations(range(1, y+1), x))

各結果をタプルではなくリストとして取得するには、リスト内包表記を使用できます。

print [list(x) for x in itertools.combinations(range(1, y+1), x)]

または、次を使用する代替手段map():

print map(list, itertools.combinations(range(1, y+1), x))
于 2013-11-08T21:45:35.773 に答える