글자 수가 3 개와 2 개라고하고 가능한 모든 단어를 찾고 싶습니다. itertools.permutations
과 itertools.product
을 시도했지만 도움이되지 않았습니다.여러개의 (가능한 반복되는) 글자를 사용하여 모든 고유 단어를 효율적으로 생성하는 방법
결과는 permutations
에 반복됩니다 (즉, 동일한 단어가 여러 번 나타남). 예를 들어 '
> print [''.join(i) for i in itertools.product('ab', repeat=3)]
['aaa', 'aab', 'aba', 'abb', 'baa', 'bab', 'bba', 'bbb']
이 개 A의 나는`['AAB '를 얻으려면 하나의 b :
> print [''.join(i) for i in itertools.permutations('aab', 3)]
['aab', 'aba', 'aab', 'aba', 'baa', 'baa']
2) product
의 결과는 문자 하나에 단어를 포함 할 수 있습니다 aba ','baa ']. 또한 결과가 매우 커질 수 있기 때문에 이터레이터를 사용하고 목록을 사용하지 않는 방법 (또는 메모리에 모든 것을 저장하는 다른 방법)이 필요합니다.
전체 결과는 매우 커질 수 있으므로 메모리에 저장됩니다. itertools 같은 것이 좋을 것입니다. – Elektito
여기에서 발전기를 사용할 수 있습니다. http://stackoverflow.com/questions/6284396/permutations-with-unique-values/6285203#6285203 또는 http://stackoverflow.com/questions/12836385/how-can-i-interleave 12837695 # 12837695 –
@LukaRahne 첫 번째 스택은 상대적으로 빠르게 소모되지만 두 번째 스택은 완벽 할 것으로 보인다. 고맙습니다. – Elektito