2013-10-23 5 views
-2

python2.7에서 itertools를 사용하고 있습니다. 나는 모든 조합을 (반복없이) 찾고 싶다. 나는 길이 30의 목록을 iterable로 가지고있다. 반복 가능한 객체를 목록으로 저장하는 동안 정지되거나 매우 오랜 시간이 걸립니다. 사람이 좀 도와 주실 래요 ..Itertools를 실행하는 데 매우 오랜 시간이 걸립니다.

#!usr/bin/python 
import itertools 
a = range(30) 
list1 = [] 
for i in range(30): 
    list1 = list(itertools.combinations(a,i)) 
+0

당신은 2 ** 30 조합을 얻는 것이 빠르지 않을 것입니다. – alko

+0

예 알로 그래서 어떤 대안이 있습니까? – nmt

+0

그 목록은 무엇을 사용하고 있습니까? –

답변

4

것은 당신이 여기서 뭘하려는 것은 요소의 매우 많은 수의 총 튜플의 일련의 목록을 만드는 것입니다 - 더 구체적으로, 2 ** 30 = 1,073,741,824 튜플은 각각 평균 ​​15 개의 정수를 포함합니다. 그것은 16,106,127,360 (16 억) 정수입니다. 비록 당신이 그들 모두를 저장할 수있는 충분한 기억을 가졌다 고해도 그것은 분명히 매우 오랜 시간이 걸릴 것입니다.

잘못된 방향에서 문제가 발생할 가능성이 있습니다 (the XY problem 참조). 실제로 해결하려고하는 문제를 설명하는 새로운 질문을 올리면 누군가가 도울 수있는 기회가 있지만, 그대로 서서히 "많은 양의 일을 무리하게하려고 노력하는 이유는 무엇입니까? 불합리하게 많은 시간을들이 는가? ", 아무도 당신을 도울 수 없게 될 것입니다.

관련 문제