2011-09-20 3 views
-2

저는 3D 공간에서 위치, 위치 또는 벡터를 계산하는 파이썬 2.6 및 2.7을 사용하여 여러 프로젝트에서 작업했으며, 두 좌표 사이의 모든 점을 계산하는 다른 방법을 보았습니다. 예를 들어, 나는 종종 그래서, 대부분의 메모리를 가장 간결하고 효율적이며 빠른 무엇인가, 3 차원 상자에 모든 포인트를 찾기 위해, xrange 또는 범위를 사용하여,포인트의 3d 범위를 계산하는 가장 빠르고, 대부분의 메모리 효율적이고 가장 간결한 방법은 무엇입니까

s = list() 
for x in xrange(xmin,xmax): 
    for y in xrange(ymin,ymax): 
     for z in xrange(zmin,zmax): 
      s.append((x,y,z)) 

구조의이 유형을 참조 3 차원 범위의 점을 계산하거나 반복하는 방법?

(명확히하기 위해, 즉 3 개 가지 방법이 아닌 하나, 그리고 계산 된 포인트의 순서는 중요하지 않습니다)

+0

가장 빠른 방법은 물론 C를 사용하는 것입니다. – brc

+2

이것은 골프/설문 조사 유형의 코드처럼 들리므로 주제를 벗어났습니다. – agf

+0

여기에 6 가지 질문을했습니다. 한 번에 하나씩 질문하십시오. –

답변

2

다음은 확실히 효율적으로보다 간결와 메모리, 그리고 나는 그것이 빠를 기대 보다뿐만 아니라 내가 테스트하지 않은 있지만, for 루프 :

from itertools import product 

list(product(xrange(xmin, xmax), xrange(ymin, ymax), xrange(zmin, zmaz))) 

당신은지도와 몇 가지 문자를 저장할 수 있습니다

list(product(*map(xrange, [xmin, ymin, zmin], [xmax, ymax, zmax]))) 
+4

또는'xrange (ymin, ymax)에서의 y에 대한 xrange (xmin, xmax)의 x에 대한 [((x, y, z) '물건. – agf

관련 문제