/ / Pythonのリストから特定の組み合わせのみを生成する - python、list、組み合わせ、itertools

Pythonのリストから特定の組み合わせのみを生成する - Python、リスト、組み合わせ、itertools

私はすべての組み合わせを生成するために次のスクリプトを使用しました:

import itertools
x = 7
my_list = range(1, 11)
for k in [x]:
for sublist in itertools.combinations(my_list, k):
print sublist

2番目の部分では、6つのランダム要素範囲(1,11)から。それらをmy_second_listと呼ぼう。 少なくともmy_second_listから5つの要素を含むように少なくとも1つの組み合わせを取得するには、my_listの組み合わせの最小数を生成する必要があります。

どのようにそれを行う上の任意のアイデアですか?

回答:

回答№1は0
import itertools

x = 7
my_list = range(1,11)

for k in [x]: # isn"t this just 7?
your_output = (combination for combination in itertools.combinations(my_list,k) if all(element in combination for element in [1,2,3,4,5]))

それは、地獄のように醜いですが、それはどうやってやればいいのですか(もし私はあなたの質問を正しく理解しています。アイテムの特定のサブセットを含む組み合わせだけを取得しようとしていますよね?アイテムのサブセットを含むその最初の組み合わせの前と後ろのすべての組み合わせが必要な場合は、次のようにします。

accumulator = list()
subset = [1,2,3,4,5] # or whatever
for k in [x]:
for combination in itertools.combinations(my_list,k):
accumulator.append(combination)
if all(el in combination for el in subset):
break

あなたの正確なユースケースに応じて、 subset として set (例えば。 {1,2,3,4,5}) そして、やります subset.issubset(set(combination)) それが何らかのプロファイリングをしなくても良いかどうかは分かりません。