2016-08-11 5 views

답변

2

당신은 itertools.product이 필요합니다

import itertools 
list = ['rst','uvw','xy','awfg22','xayx','1bbc1','thij','bob','thisistomuch'] 
for x in itertools.product(*list): 
    print(''.join(x)) 

제품은 가져 반복자에서 모든 요소의 수 튜플을 반환 . 그래서

itertools.product('ab', 'cd') 

는 ('A', 'C') ('A', 'D'), ('B', 'C')을 산출 발전기를 반환 ('B', ' D ')

+0

감사합니다, 정확히 내가 찾던 :에 대해 무엇

! – Eplox

3

당신은 itertools에서 product 기능을 찾고 있습니다 :

import itertools 

lst = ['rst','uvw','xy'] 
[''.join(s) for s in itertools.product(*lst)] 

# ['rux', 
# 'ruy', 
# 'rvx', 
# 'rvy', 
# 'rwx', 
# ... 
# 'twx', 
# 'twy'] 
0

또 다른 방법은? 명확히. 더 간단한가? 어쩌면 ...

당신의 목록에 얼마나 많은 문자열이 있는지 반드시 알 필요가 없기 때문입니다. SL = 'ABC', 'MNO', 'XYZ']

def strCombo(l,s=''): 
    if(len(l)==0): 
     return s 
    elif(len(l)==1): 
     return [(s+x) for x in l[0]] 
    else: 
     return [strCombo(l[1:],(s+x)) for x in l[0]] 



final = [] 
for x in strCombo(sl)[0]: 
    final = final + x 
관련 문제