我一直在谈论一些基本的东西。我的想法如下:我想写一个简单的def,做偏导数。我知道那里已经有工具了,但我碰巧是一个自我主义者,可能有很差的古老蟒蛇技能。不用多说,情况就是这样。 首先是策略: 我想把像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), 那么我会把它分开,但那是关于它的 "以下部分------------------"或多或少是伪代码。
这可能是这里发布的最愚蠢的问题。 。
答案 0 :(得分:1)
re.split()
只接受字符串类型,因此您无法将列表传递给它。同样在你的模式中你有一个额外的空间r'[+-]'
:
>>> s="2x + 3y"
>>> s1="2x + 3y"
>>> s2="2x - 3y"
>>> re.split(r'[+-]',s1)
['2x ', ' 3y']
>>> re.split(r'[+-]',s2)
['2x ', ' 3y']
您也可以使用str.strip
删除已拆分元素中的空格:
>>> [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']