2014-12-13 1 views
0

나는 python으로 itertools 모듈을 사용하고있다. combine_with_replacement가 모든 조합을 제공하지 않는다는 것을 알았습니다.itertools를 사용하여 Python 조합에 갇혀있다

>>>import itertools 
>>>[list(x) for x in itertools.combinations_with_replacement('AB', 3)] 
[['A', 'A', 'A'], ['A', 'A', 'B'], ['A', 'B', 'B'], ['B', 'B', 'B']] 

이 날 [ 'A', 'B', 'A']이나 [ 'B', 'A', 'B'를]주지 않는다.

누구에게 왜 이것이 중요한지, 더 중요한 것은 어떻게 수정하는지 알고 있습니까?

+0

예. 나는이 목록의 조합을 사용하고 있었고 그 반대의 것이었다. – NotFromBrooklyn

+0

이유는 간단합니다 :'combinations_with_replacement'의 정의는 여러분이 기대하는 바가 아닙니다. doc 읽기 ;-) –

답변

2

시도 3 반복으로 product :

import itertools 
print [list(x) for x in itertools.product('AB', repeat=3)] 

준다 :

[ 'A', 'A', 'A', [ 'A', 'A', ' B ','B ','A ','A ','A ','B '

목록의 이해력을 사용하면 언제든지 리조트에 갈 수 있습니다 :

,515,
ab_str = "AB" 
# don't have to use +, can do (x, y, z,) 
print [x + y + z for x in ab_str for y in ab_str for z in ab_str] 

준다 :

[ 'AAA', 'AAB', 'ABA', 'ABB', 'BAA', 'BAB', 'BBA', 'BBB']

+0

고마워요.이게 내가 필요한 것입니다. – NotFromBrooklyn