2017-01-18 8 views
3

(-x、-x、-x、...)から(+ y、+ y + y、...)、x、y> 0までの座標を持つキューブが与えられた場合、短く読みやすいコードを持つすべての整数のうちのどれですか?Pythonを使ってn次元キューブ内のすべての整数点のリストを取得する方法は?

これまでのところ私が持っている:

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 

は、より直感的な解決策はありますか?

答えて

5

のためのあなたの第二の溶液は、完全に罰金です代わりに:

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

これは確かに明確です。 – NOhs

1

だけ関数であなたの「ハードコード」バージョンをカプセル化し、引数等x1x2はx軸上にキューブを投影することによって形成される線の端点である

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

として寸法を渡します

編集:私はこのようにそれを行うだろうけれども、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))) 
+0

Sry、私はスペースの次元を意味しました。したがって、2に設定すると2番目の点が2次元になります。 – NOhs

+0

@MrZOops、私は完全に "n次元"を欠いていました。問題ない。 –

+0

@MrZ私は任意の超矩形の解を追加しました。それを見ると、Stefan Pochmannsの変更による2番目の解決策は、あなたが得ようとしているものと同じくらい良いと思います –

関連する問題