2014-05-14 2 views
1

에 목록에서 특정 조합을 생성 : 나는 범위에서 6 개 무작위 요소 (1, 11) 소요됩니다 두 번째 부분에 대한내가 모든 조합을 생성하기 위해 다음 스크립트를 사용했습니다 파이썬

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

합니다. my_second_list라고 부르 자. my_second_list에서 5 개의 요소를 포함하도록 적어도 하나의 조합을 얻으려면 my_list 조합의 최소 개수를 생성해야합니다.

그 방법에 대한 아이디어가 있으십니까?

+0

'하위 목록'을 검토하여 출력을 필터링 할 수 있습니까? –

+0

질문을 편집하고 예상 결과를 포함시켜야한다고 생각합니다. –

+0

더 구체적으로 질문을 편집했습니다. 이전 버전은 의미가 없었습니다. 지난 밤에 내가 썼을 때 나는 매우 피곤했을 것이다 :) – wiseguy0106

답변

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

그것은 지옥으로 추한,하지만 그건 내가 제대로 질문을 이해 해요 경우. 당신이 있다면? 오른쪽 항목의 특정 부분 집합을 포함하고 만 조합을 얻기 위해 노력하고 (나는 그것을 할 거라고 방법 당신이 원하는 모든 조합 전 항목의 하위 집합을 포함 첫째 조합, 내가 할 거라고 포함 : 당신이로 subset를 정의하는 것이 좋습니다

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 

를 정확한 사용 사례에 따라, set (예 {1,2,3,4,5}를) 및 subset.issubset(set(combination))을해라. 그러나 그것이 약간의 prof를하지 않고 있으면 좋든 싫든 말하기는 어렵다. iling.

+0

나는 더 명백한 질문을 편집했다. – wiseguy0106

+0

@ wiseguy0106 아직 명확하지 않습니다. 'N' 요소가 다른 목록'L'과 공유되도록 첫 번째 조합 만 필요합니까? 'L'은 몇 개입니까? 'N'을 바꿀 수 있습니까? –

+0

이 더 명확해야합니다. A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 및 B = 6 개의 무작위 요소를리스트로 가지고 있습니다. 목록 A의 조합은 목록 B의 5 개 요소를 포함하도록 적어도 하나의 조합을 얻기 위해 취한 7입니다. 이는 감소 된 로또 시스템과 유사합니다. 특정 조합에서 10 개의 숫자를 재생하고, 맞으면 5 개를 말하십시오. 4 개의 우승 상금을 포함하는 1 개 이상의 조합이 보장됩니다. 그리고 가능한 모든 조합을 재생할 필요가 없습니다. – wiseguy0106