Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “列出一个级别”;“拆包”;_Python_Sympy - Fatal编程技术网

Python “列出一个级别”;“拆包”;

Python “列出一个级别”;“拆包”;,python,sympy,Python,Sympy,我有一个函数,它返回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):

我有一个函数,它返回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)]

如何才能以更好的方式完成它?

使用列表理解:

result=[结果中p的元组([p[0],p[1],p[2]])]
我刚刚查看了的文档,您似乎可以找到一个更优雅的解决方案:

result=[结果中p的元组([p.x,p.y,p.z])]
或者,正如@OscarBenjamin在评论中指出的,这可能是最简单的解决方案,您可以使用:

result=[p.args表示结果中的p]

小注:我向sympy的point类添加了一个新方法,该方法返回点的所有坐标:

result = [p.coordinates for p in result]

也许
result=[p.args表示结果中的p]
?您也可以使用p.args,它给出相同的元组:
result=[p.args表示结果中的p]
@OscarBenjamin,谢谢您的观察,我更新了我的答案。