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

我怎样才能以更好的方式做到这一点?

#1楼 票数: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]

#2楼 票数:0

小提示:一个新方法(由我)添加到 sympy 的点类,它返回点的所有坐标:

result = [p.coordinates for p in result]

  ask by PepeElMago33 translate from so

未解决问题?本站智能推荐:

1回复

如何列出所有同情符号?

我正在使用 ipython 控制台和 sympy 编写一个小计算器。 设置是 很高兴看到 sympy 中已经定义了哪些符号。 如何获得所有 sympy 符号的列表? 即包含x 、 y 、 z和f但不包含g ,因为g是一个普通的 python lambda。 我正在寻找类似vars()或glob
2回复

Python:列出代数简化

嗨,我正在尝试获取列表的常用术语以简化它,例如,如果我的列表是: 是否有任何功能可以给我结果: 我基本上想做的是代数减少。 简化的唯一要求是简化的所有术语都需要依赖于K的总和或其余部分。 换句话说,一切都需要是K的线性组合的函数: [-KcKa + KDKa] ; [
1回复

如何删除所有已定义的SymPy符号而不明确列出它们?

SymPy和Python新手在这里。 我运行一个迭代许多测试文件的脚本。 每个文件定义一组要使用的符号。 在每次循环迭代结束时,我想删除之前使用symbols()语句创建的所有符号,仅此而已,因为我正在使用其他非符号变量。 我不能做del(x)和del(y)因为每次迭代都会加载一
1回复

是否可以使用 sympy 来列出线图

这里我有一个数组 Array(len(factor_list(x**j - 1)[1]) for j in range(1,200)) 而我想要达到的效果 也就是说,如何绘制所有这些点并用线连接它们。 list(zip(range(1,20), Array(len(factor_list(x
1回复

Octave:使用符号包时导入错误

我首先使用以下方法从源代码构建 Octave: 然后我使用以下命令从八度内安装了符号包: 之后我做了: 在使用 syms 函数时,它给出了一个未安装 Sympy 的 ImportError。 因此,我使用以下方法安装了 Sympy: 之后我再次尝试使用 syms ,现在它给出了这个错
1回复

在本地版本的python包中找不到回购中的模块

我想physics.quantum.TensorProduct' method in sympy中使用physics.quantum.TensorProduct' method in 。 在仓库中,这种方法肯定存在。 但是,当尝试导入到我的python会话中时,我得到以下信息: 我使
2回复

使用Anaconda安装github版本的软件包

我安装了Sympy和Anaconda ,我的版本(Sympy)是0.7.6。 我希望能够使用Sympy的git版本。 你知道我怎么能告诉Anaconda替换这两个版本? 我尝试过使用git clone命令,但是git和Anaconda的Sympy文件夹看起来并不一样,所以我不能用另
1回复

Sympy包solve()并未提供针对root(x,3)的所有解决方案

我正在使用sympy package和resolve()来获取方程的根,其中 只给出结果为0和2。但是(全部)解可以通过手动简化为 为0,2,-2。 我的问题是,为什么不使用root(x,3)给出所有解决方案? 它是如何工作的(确定它是否具有所有解决方案)?