【问题标题】:What are the fastest, most memory efficient, and most concise ways to calculate a 3d range of points [closed]计算 3d 点范围的最快、最节省内存和最简洁的方法是什么 [关闭]
【发布时间】:2011-09-20 23:33:02
【问题描述】:

我曾使用 python 2.6 和 2.7 计算 3d 空间中的位置、位置或向量的多个项目,并且我看到了计算两个坐标之间所有点的不同方法。 例如,我经常看到这种类型的构造,使用 xrange 或 range 来查找 3 维框中的所有点,

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))

那么,在 3d 范围的点上计算或迭代的最节省内存、最简洁和最快的方法是什么?

(澄清一下,这是3种不同的方法,不是一种,计算点的顺序无关紧要)

【问题讨论】:

  • 最快的方法当然是用C。
  • 这听起来像是代码高尔夫/民意调查类型的问题,所以它是题外话。
  • 您在这里提出了 6 个问题。请一次问一个。
  • 你在计算什么?您是否正在寻找具有 3D 形状的对象列表? (我假设你是)。

标签: python methods 3d range


【解决方案1】:

以下绝对是更简洁和内存效率更高,我希望它也比 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])))

【讨论】:

  • [(x,y,z) for x in xrange(xmin,xmax) for y in xrange(ymin,ymax) for z in xrange(zmin,zmax)],如果您不了解整个import
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-19
  • 2017-06-27
  • 2013-02-11
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
相关资源
最近更新 更多