2014-08-29 1 views
1

흥미로운 답변으로 질문 수정을 허용합니다.세 개의 목록을 기반으로 가능한 모든 튜플을 생성하십시오.

코드에 약간의 변화 후 내가 가지고이 :

#coding:utf-8 

import itertools 


stuff = [1, 2, 3, 4, 5, 8, 10, 13, 16, 17, 18, 20, 21, 22, 25] 
for L in range(5, 6): 
    for subset in itertools.combinations(stuff, L): 
     subset = list(subset) 
     subset.extend([7, 9, 11, 15, 19, 23, 6, 12, 14, 24]) 
     print(subset) 

그것의 출력은 다음과 같다 :

[1, 2, 3, 4, 5, 7, 9, 11, 15, 19, 23, 6, 12, 14, 24] 
[1, 2, 3, 4, 8, 7, 9, 11, 15, 19, 23, 6, 12, 14, 24] 
... 

약 3000 라인을 생성합니다.

5 가지 숫자의 목록 항목과 가능한 모든 조합을 수행하고 모든 단일 조합 (하위 집합)에 다른 목록 (subset.extend ([7, 9, 11, 15, 19, 23, 14, 24])). 그것은 옳은 것 같습니다, 확실하지 않습니다.

하지만 내가 정말하고 싶은 것은 :

1 - 입력 세 가지 목록 (쌍 페어링)

stuff = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25] 
pair = [2 , 6, 12, 20, 16, 10, 22] 
unpair = [1, 5, 11, 19, 23, 25, 13, 17] 

2 - 프로그램이 7에서 4 개 개의 숫자의 모든 조합을 생성합니다보다 쌍의 수는 쌍을 이루지 않고 동일하게 처리되고 쌍을 이루는 8 개의 숫자에서 4 개의 숫자의 모든 조합을 생성하고 함께 묶어서 쌍을 이룬 4 개의 숫자와 쌍을 이루는 4 개의 숫자가 조합 된 8 개의 가능한 조합을 만듭니다 like :

- 3 쌍의 연결 해제의 조합으로부터, 각 라인에 비해는 여기

[2, 12, 20, 10, 1, 5, 19, 23, 25, 3, 4, 8, 17, 21, 22] 
[2, 12, 20, 10, 5, 19, 25, 13, 3, 4, 8, 17, 21, 22, 11] 
... 

같은 숫자의 반복없이 15 개 번호리스트를 생성하는리스트 재료로부터 7 개 숫자 조합 완료 생성 내가 붙어있는 곳. 각 목록에 대한 조합을 생성하고 숫자와 시퀀스를 반복하지 않고 15 개의 숫자 목록을 생성하는 방법

+3

그것은 당신이 무엇을 의미하는지 완전히 명확하지 않다가 없을 때이 특정 코드에만 작동합니다. 예제 출력을 줄 수 있습니까? –

+1

이것은 매우 수수한 질문입니다. 입력과 예상 출력을 실제로 고려해야합니다. –

답변

0

그냥 수동으로 그 논리를 코딩 할 수있는 루프 :

for combo in itertools.combinations(stuff, 15): 
    if set(combo).issuperset(pair) and set(combo).issuperset(unpair): 
     print(combo) 

참고 : "물건"에는 중복