如何使用python获取n维立方体中所有整数点的列表?

时间:2017-01-18 19:04:30

标签: python

给定一个坐标从(-x,-x,-x,...)到(+ y,+ y + y,...),x,y> 0的立方体,我如何得到一个具有简短易读代码的所有整数的列表?

到目前为止,我有:

list((x,y,z) for x in range(-x,y) for y in range(-x,y) for z in range(-x,y))
# has the dimension hardcoded

list(itertools.product(*[np.arange(-x, y)]*dim))
# difficult to understand what is going on

是否有更直观的解决方案?

2 个答案:

答案 0 :(得分:5)

你的第二个解决方案看起来非常好,但我会这样做:

list(itertools.product(range(-x, y), repeat=dim))

答案 1 :(得分:1)

只需封装您的"硬编码"函数中的版本,并将维度作为参数传递

def cube_points(x1, x2, y1, y2, z1, z2): #This describes any rectangular prism
    return [(x,y,z) for x in range(x1, x2+1) for y in range(y1, y2+1) for z in range(z1, z2+1)]

其中x1x2是通过将立方体投影到x轴上形成的线的端点等。

编辑:对于n维立方体

from itertools import product
def ndcube(*args): #accepts a list of 2-tuples
    return list(product(*map(lambda x: range(x[0], x[1]+1), args)))