re.split('[+ -]',f) 或更好地步进到偏导数

re.split('[+ -]',f) or better stepping to partial derivatives

我一直在 运行圈子里讨论一些基本的东西。我的想法如下:我想写一个简单的 def 来做偏导数。我知道那里已经有工具了,但我碰巧是一个自负的人,可能拥有过时的 python 技能。事不宜迟,情况就是这样。 先说策略: 我想将 2x + 3y 之类的东西拆分成 [2x , 3y];然后对 2x 进行操作,从而对 [0] 和 3y, [1] 进行我尚未编写的导数运算。我打算象征性地这样做。我决定在不尝试一些肮脏的尝试的情况下,不要过多地研究其他人是如何做到这一点的。 这是我的非工作实现

def partialderivative(f, a):

 import re
 L = list(f)
 re.split('[+ -]', L)
 derivative (L[0],x)
 derivative (L[0],y)
 derivative (L[1],x)
 derivative (L[1],y)

打印(部分结果)

现在有很多事情我不完全理解。如果我 运行 上面的第一部分通过命令行仔细确保 f --> 'f' 和 作为 re.split('[+ -]',f) , 然后我会把它分开,但仅此而已 “----------------”下面的部分或多或少是伪代码。

这可能是这里发布的最愚蠢的问题。 . .

re.split() 只接受字符串类型,因此您无法将列表传递给它。同样在你的模式中你有一个额外的 space r'[+-]' :

>>> s="2x + 3y"
>>> s1="2x + 3y"
>>> s2="2x - 3y"
>>> re.split(r'[+-]',s1)
['2x ', ' 3y']
>>> re.split(r'[+-]',s2)
['2x ', ' 3y']

您还可以使用 str.strip 从拆分元素中删除 spaces :

>>> [i.strip() for i in re.split(r'[+-]',s2)]
['2x', '3y']

在一个函数中:

>>> def spliter(s):
...    return [i.strip() for i in re.split(r'[+-]',s)]
... 
>>> spliter(s1)
['2x', '3y']
>>> s3="4x + 12z - 18k"
>>> spliter(s3)
['4x', '12z', '18k']