0
itertools
파이썬 라이브러리의 product
메서드를 사용하여 목록의 항목의 모든 순열을 계산합니다. 예를 들어 :itertools.product의 각 반복과 상호 작용
>> elems = [[1,2],[4,5],[7,8]]
>> permutations = list(itertools.product(*elems))
>> print permutations
# this prints [(1, 4, 7), (1, 4, 8), (1, 5, 7), (1, 5, 8), (2, 4, 7), (2, 4, 8), (2, 5, 7), (2, 5, 8)]
내가 계산으로, 오히려 한 번에 순열의 전체 집합을 반환하는 것보다 각 순열을 확인할 수 있습니까? 현재 직면하고있는 문제는 너무 많은 순열이 생성되기 때문에 스크립트를 실행하는 동안 Python Memory Error
을 실행한다는 것입니다. 나는 단지 하나의 순열만을 염려한다. 각 순열이 생성 될 때마다 확인할 수 있다면 모든 가능한 순열을 저장하는 대신 하나의 값만 저장할 수 있습니다. 가능한가요, 그렇다면 어떻게 구현할 것인가?
각 순열의 요소를 합산하려고한다고 가정하면 생성기에서이를 처리 할 수도 있습니다. (itertools.product (* elems)의 a_perm에 대한 합계 (a_perm))'. 저는 이것을 큐에서 아이템을 팝핑하고, 아이템에 오퍼레이션을 적용하고, 결과를 다른 큐에 푸시하는 것으로 생각합니다. 그리고 큐가 거의 무한하거나 길이가 무한하더라도 여전히 작동합니다. – IceArdor
잘 작동합니다. 감사합니다! –