2014-11-19 3 views
0

누군가 나를 올바른 길로 인도하기위한 힌트를 줄 수 있습니까?python - 조합 (itertools)을 생성 하시겠습니까?

다음을 해결하기 위해 모든 조합을 제공하는 파이썬 코드를 작성해야합니다. 가능한 모든 문자 조합을 생성해야합니다. 항상 6 개의 문자가 있습니다. 그러나 각 위치에 특정 문자 만있을 수 있습니다.

  • 첫 문자 만 (문자 A 또는 t (2 가능성)
  • 번째 문자가 세 번째 문자는 g 또는 t가 될 수있는, t 또는 -C (3 가능성)
  • 될 수 될 수있다 2 가능성)
  • 네 번째 문자는 다섯 문자 C, g 또는 t (3 가능성)
  • 여섯 번째 문자 수 BA 또는 t가 될 수있는, t, c 또는 g (4 가능성)
  • 될 수 (2 가지 가능성)

필자는 파이썬 itertools를 사용해야한다고 생각했지만 모든 예제에서는 각 위치에 사용할 수있는 고정 된 수의 옵션 (각 경우 문자)을 사용할 수 있지만 사용 가능한 문자는 위치마다 다릅니다.

도움을 주시면 감사하겠습니다.

+3

itertools.product ('at', 'atc', 'gt', ...)'? – jonrsharpe

답변

2

당신은 당신은 각각의 가능한 값 목록의 목록을 작성하기 위해 필요한이 작업

에 대한 itertools.product를 사용하려면 : 이것은 288 개 항목을 출력

import itertools 

l = [ 
     ['a','t'], 
     ['a','t','c'], 
     ['g','t'], 
     ['a','t','c','g'], 
     ['c','g','t'], 
     ['a','t'] 
    ] 

for out in itertools.product(*l): 
    print out; 

. 작은 샘플은 다음과 같습니다

l = ['at','atc','gt','atcg','cgt','at'] 
: jonsharpe는 주석에서 지적한 것처럼

('t', 't', 't', 'g', 'g', 't') 
('t', 't', 't', 'g', 't', 'a') 
('t', 't', 't', 'g', 't', 't') 
('t', 'c', 'g', 'a', 'c', 'a') 
('t', 'c', 'g', 'a', 'c', 't') 
('t', 'c', 'g', 'a', 'g', 'a') 
('t', 'c', 'g', 'a', 'g', 't') 
('t', 'c', 'g', 'a', 't', 'a') 
('t', 'c', 'g', 'a', 't', 't') 
('t', 'c', 'g', 't', 'c', 'a') 
('t', 'c', 'g', 't', 'c', 't') 
('t', 'c', 'g', 't', 'g', 'a') 
('t', 'c', 'g', 't', 'g', 't') 
('t', 'c', 'g', 't', 't', 'a') 
('t', 'c', 'g', 't', 't', 't') 
('t', 'c', 'g', 'c', 'c', 'a') 
('t', 'c', 'g', 'c', 'c', 't') 
('t', 'c', 'g', 'c', 'g', 'a') 

당신은 또한 유효한 문자열의 단일 목록 (이 위에서부터 l 변수를 교체를) 할 수 있습니다

+1

'[ 'at', 'atc', ...]' – jonrsharpe

+0

Super라는 문자열 목록 만 가질 수 있습니다. Andy에게 감사드립니다. 그게 내가 필요한거야. – kye

+1

@kye http://stackoverflow.com/help/someone-answers – jonrsharpe