Wolfram 语言允许调用纯( “匿名”)函数,由 & 结尾,第一个参数由 # 指明。
关于纯函数的进阶使用,可以参考一下我的这篇文章:Mathematica进阶[3]–纯函数#1,#2与@@@的使用
下面介绍一下纯函数的基本的使用方式。
文章目录(Table of Contents)
纯函数的基本用法
(# + 1) &[1]
>> 2
一般情况下,纯函数会合Map
函数一起使用,来提升效率。
(# + 1) &/@{1,2,3}
>> {2,3,4}
有多个参数的指定方式
{#2 - #1, #3 - #1} &[a, b, c]
>> {-a + b, -a + c}
当然多个参数也能可以使用Apply
来结合一起使用,来提高效率。
{#2 - #1, #3 - #1} & @@@ {{1, 2, 3}, {4, 5, 6}}
>> {{1, 2}, {1, 2}}
(*在这里@@@等同于下面这种写法*)
Apply[{#2 - #1, #3 - #1} &, {{1, 2, 3}, {4, 5, 6}}, {1}]
>> {{1, 2}, {1, 2}}
(*简写形式 @@@ 等价于在层 1 应用Apply*)
纯函数的应用
纯函数在Select等一些内置函数中使用比较常见,我们看下面的例子
Select[{1, 2, 34, 2, 52, 2, 34, 1}, # > 10 &]
>> {34, 52, 34}
注意,这里的纯函数要与模式区分开来。
Position[{1, 2, 34, 2, 52, 2, 34, 1}, x_ /; x > 10]
>> {{3}, {5}, {7}}
FullForm[x_ /; x > 10]
>> Condition[Pattern[x,Blank[]],Greater[x,10]]
在python中,有lamdba与mathematica中的纯函数意思是差不多的,我们下面来看一下例子。
num = [1,2,3,4,5,6,7]
list(filter(lamdba x:x>3,num))
>> [4,5,6,7]
list(map(lamdba x:x+3,num))
>> [4,5,6,7,8,9,10]
- 微信公众号
- 关注微信公众号
- QQ群
- 我们的QQ群号
评论