我有一个返回Sympy点的函数:
result = [Point3D(500, 500, 10), Point3D(-500, 500, 10), Point3D(-500, -500, 10), Point3D(500, -500, 10)]
但是我需要获取点的值,而不是点实例,所以我这样做:
a, b, c, d = [], [], [], []
for i in range(3):
a.append(result[0][i])
for i in range(3):
b.append(result[1][i])
for i in range(3):
c.append(result[2][i])
for i in range(3):
d.append(result[3][i])
# And then pack it:
result = [tuple(a), tuple(b), tuple(c), tuple(d)]
我知道这是获取所需输入的一种可怕方法,即:
result = [(500, 500, 10), (-500, 500, 10), (-500, -500, 10), (500, -500, 10)]
我怎样才能做得更好?
答案 0 :(得分:1)
使用列表理解:
result = [tuple([p[0], p[1], p[2]]) for p in result]
我刚刚查看了Point3D
的文档,看来您可以找到一个更优雅的解决方案:
result = [tuple([p.x, p.y, p.z]) for p in result]
或者就像@OscarBenjamin在评论中指出的那样,这可能是最简单的解决方案,您可以使用:
result = [p.args for p in result]
答案 1 :(得分:0)
小注释:(我)已向sympy的point类添加了一个新方法,该方法返回该点的所有坐标:
result = [p.coordinates for p in result]