1から8までの単純なリストがあり、7文字を含む組み合わせのみが必要だとします。どうすればそれを効率的に行うことができますか?リスト全体を繰り返さずにそれを行うことは可能ですか?
たとえば、これはリスト全体を実行します。
import itertools
stuff = [1, 2, 3,4,5,6,7,8]
count = 0
for L in range(0, len(stuff)+1):
for subset in itertools.combinations(stuff, L):
print(subset)
count = count + 1
print count #returns 256 results with 8 matching the 7 length
Litertools.combinations(stuff, L):
を7に変更すると機能しますが、多くの重複が発生します(72の結果で、ほとんどが重複です)。上記のコードから必要な7つの項目を抽出できることはわかっていますが、リストが大きい場合は、それを行うのは非効率的です。助言がありますか?
この場合、私が探している最終結果は次のとおりです。
(1, 2, 3, 4, 5, 6, 7)
(1, 2, 3, 4, 5, 6, 8)
(1, 2, 3, 4, 5, 7, 8)
(1, 2, 3, 4, 6, 7, 8)
(1, 2, 3, 5, 6, 7, 8)
(1, 2, 4, 5, 6, 7, 8)
(1, 3, 4, 5, 6, 7, 8)
(2, 3, 4, 5, 6, 7, 8)