怎么用Mathematica进行模式匹配?

2025-09-29 04:46:01

1、明确一下,A是由三层列表构成的。

怎么用Mathematica进行模式匹配?

2、匹配第一层的所有整数:

Cases[A, _Integer]

只得到3个整数,因为Mathematica把A里面的子列表视为A的一个元素。

看,下一步。

怎么用Mathematica进行模式匹配?

3、找出A的第一层的子列表:

Cases[A, _List]

怎么用Mathematica进行模式匹配?

4、找出A的第一层的浮点数:

Cases[A, _Real]

结果只找到12.3,不包括里面的整数和分数。

原因是,Real是浮点数,不是全体实数。

怎么用Mathematica进行模式匹配?

5、找出A里面第一层的有理数:

Cases[A, _Rational]

同样,Mathematica只找到5/6这个分数,把小数和整数都排除在外。

怎么用Mathematica进行模式匹配?

6、找出A第一层的奇数:

Cases[A, t_ /; Mod[t, 2] == 1]

怎么用Mathematica进行模式匹配?

7、找出A第一层的所有非偶数:

Cases[A, t_ /; Mod[t, 2] != 0]

怎么用Mathematica进行模式匹配?

8、找出A的第一层的所有字母:

Cases[A, _Symbol]

m+n被视为表达式,不是字母。

怎么用Mathematica进行模式匹配?

9、找出A第一层的加法表达式:

Cases[A, _Plus]

怎么用Mathematica进行模式匹配?

10、A的第一层里面,以x为指数的幂运算表达式:

Cases[A, _^x]

怎么用Mathematica进行模式匹配?

11、Cases[A, x^_]

怎么用Mathematica进行模式匹配?

1、深入第二层,寻找A里面幂运算表达式:

Cases[A, _Power, 2]

怎么用Mathematica进行模式匹配?

2、寻找A里面所有的幂运算表达式:

Cases[A, _Power, Infinity]

怎么用Mathematica进行模式匹配?

3、A里面的所有字母:

Cases[A, _Symbol, Infinity]

令人吃惊的是,Mathematica竟然可以深入到表达式里面寻找字母,比如m和n。

怎么用Mathematica进行模式匹配?

4、寻找所有的加法表达式:

Cases[A, _Plus, Infinity]

为什么2+3没有找出来?

因为对A进行定义的时候,2+3已经被算出结果了。

怎么用Mathematica进行模式匹配?

怎么用Mathematica进行模式匹配?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢