2011-09-20 75 views
-2

我已经与几个项目使用Python 2.6和2.7计算位置,位置或矢量在三维空间,我看到了不同的方法来计算两个坐标之间的所有点。 例如,我经常看到这种类型的构造,即使用的xrange或范围,找出所有的点在3维中,什么是最快,效率最高的内存和最简洁的方法来计算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种不同的方法,而不是一个,而计算出的点的顺序并不重要)

+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

或'x(xmin,xmax)中的x(ymin,ymax)中的y [xmin,ymax]中的x [zmin,zmax]中的[[(x,y,z)]''如果不是整个' '东西。 – agf

相关问题