2017-12-03 5 views
-1

어떻게이 튜플 ("A", "E", "L")을 취하고 문자를 반복하지 않고 가능한 모든 단어를 생성합니까? 그 결과는 단 한 개의 문자로 된 3 단어, 2 개의 문자로 된 6 개의 단어 및 3 개의 문자로 된 6 개의 단어가 될 것입니다.순열 Python

def gererate(tuplo_letras): 
    return [i for i in itertools.permutations(tuplo_letras)] 

def final(arg): 
    return generate(list(map(''.join, itertools.permutations(arg)))) 
+1

의 중복 가능성은 https ://stackoverflow.com/questions/8306654/finding-all-possible-permutations-of-a-given-string-in-python –

+2

Pls 자신의 시도를 게시하십시오! – schwobaseggl

+0

DEF gererate (tuplo_letras) : itertools.permutations에서의 I를 I (tuplo_letras)] \t 창 DEF 최종 (ARG). \t 복귀 (생성 목록 (지도 ('가입 itertools.permutations (ARG))))) – Pereira

답변

1

당신은 itertools.permutations을 사용하고 커버 할 순열의 모든 lengthes을 반복 할 수 있습니다

나는이 시도했다. permutations는 두 개의 인수, 당신은 원하는 반복 가능하고, 순열의 원하는 길이 소요 참고 :

from itertools import permutations, chain 

tpl = ("A", "E", "L") 
[''.join(p) for p in chain(*(permutations(tpl, l+1) for l in range(len(tpl))))] 
# ['A', 'E', 'L', 'AE', 'AL', 'EA', 'EL', 'LA', 'LE', 'AEL', 'ALE', 'EAL', 'ELA', 'LAE', 'LEA'] 

당신이 분류를해야 할 경우 당신 따라 중첩 함축 할 수 있습니다

[[''.join(p) for p in (permutations(tpl, l+1))] for l in range(len(tpl))] 
# [['A', 'E', 'L'], ['AE', 'AL', 'EA', 'EL', 'LA', 'LE'], ['AEL', 'ALE', 'EAL', 'ELA', 'LAE', 'LEA']] 
+0

그리고 단어 길이에 따라 새로운 목록을 만드는 방법은 무엇입니까? 나는 하나의 글자로 모든 단어를 나열하고, 다른 단어에는 두 단어로 된 단어를 나열하는 등의 작업을 수행합니까? – Pereira

+0

길이 변형으로 그룹화 된 중첩 목록으로 업데이트했습니다. – schwobaseggl

+0

다른 조건에 따라 단어를 선택해야한다면 어떻게해야합니까? – Pereira