Mathematica入门[10]–Pure Functions(纯函数)

王 茂南 2018年1月10日16:14:45
评论
2 957字阅读3分11秒
摘要Wolfram 语言允许调用纯( “匿名”)函数,由 & 结尾,第一个参数由 # 指明。下面介绍一下纯函数的基本的使用方式。

 

Wolfram 语言允许调用纯( “匿名”)函数,由 & 结尾,第一个参数由 # 指明。

关于纯函数的进阶使用,可以参考一下我的这篇文章:Mathematica进阶[3]–纯函数#1,#2与@@@的使用

下面介绍一下纯函数的基本的使用方式。

纯函数的基本用法

(# + 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]

Mathematica入门[10]–Pure Functions(纯函数)

 

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2018年1月10日16:14:45
  • 转载请务必保留本文链接:https://mathpretty.com/8878.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: