rho*_*ron 5 python geometry tuples list
if n == 1: return [(-1,), (1,)]
if n == 2: return [(-1,0), (1,0), (0,-1), (0,1)]
if n == 3: return [(-1,0,0), (1,0,0), (0,-1,0), (0,1,0), (0,0,-1), (0,0,1)]
Run Code Online (Sandbox Code Playgroud)
基本上,返回2n符合上述规范的元组列表.上面的代码适用于我的目的,但我想看到一个适用于所有n的函数??(仅用于教化).包括tuple([0]*n)在答案中是可以接受的.
我正在使用它来生成测量多面体的面的方向.对于所有方向,我可以使用list(itertools.product(*[(0, -1, 1)]*n)),但我无法想出一些非常简洁的东西,只有面部方向.
def faces(n):
def iter_faces():
f = [0] * n
for i in range(n):
for x in (-1, 1):
f[i] = x
yield tuple(f)
f[i] = 0
return list(iter_faces())
Run Code Online (Sandbox Code Playgroud)
>>> faces(1)
[(-1,), (1,)]
>>> faces(2)
[(-1, 0), (1, 0), (0, -1), (0, 1)]
>>> faces(3)
[(-1, 0, 0), (1, 0, 0), (0, -1, 0), (0, 1, 0), (0, 0, -1), (0, 0, 1)]
Run Code Online (Sandbox Code Playgroud)