Wolfram Computation Meets Knowledge

Wolfram 语言:
快速编程入门

显示附加备注:
全部选择 
开始使用

函数应用 观看视频

将一个函数“映射”到多个表达式是很常见的:

In[1]:=1
Map[f, {a, b, c, d}]
Out[1]=1

Python 程序员备注:

Map 在 Wolfram 语言中与 Python 中的 map 相同,除此之外,它可以在任意深度的表达式树上操作.


/@(“斜杠 艾特”)是 Map 的简写形式:

In[2]:=2
f /@ {a, b, c, d}
Out[2]=2

Java 程序员备注:

Wolfram 语言中的 Map 的功能与 Java 中的 Stream.map 方法相同,此外 Map 可应用于任何类型的表达式.


这里使用一个 纯函数

In[3]:=3
{#, #} & /@ {a, b, c, d}
Out[3]=3

Apply 将一个函数应用于多个参数:

In[1]:=1
Apply[f, {a, b, c, d}]
Out[1]=1

Python 程序员备注:

Apply 在 Wolfram 语言中与 Python 中的拆包操作符 * 类似.


表达式所带的“层”对应于需要提取部分的索引号. 像 Map 这样的函数可以在指定的层进行操作.

Java 程序员备注:

"Levels" 是一个数组维数的另一个名称,但对全部符号表达式进行泛化. 类似的多维操作在 Java 中并未构建并且通常需要循环.

Python 程序员备注:

“Levels”如同一个数组的维数,但对全部符号表达式进行泛化. Python 的数组函数通常对于一维数组设定.

Map 默认在第一层操作:

In[1]:=1
Map[f, {{a, b}, {c, d}}]
Out[1]=1

该操作只在第二层进行:

In[2]:=2
Map[f, {{a, b}, {c, d}}, {2}]
Out[2]=2

@@ 等价于 Apply,默认在第0层操作:

In[1]:=1
f @@ {{a, b}, {c, d}}
Out[1]=1

@@@ 是指“在第一层应用”:

In[2]:=2
f @@@ {{a, b}, {c, d}}
Out[2]=2

@ 是指普通函数应用:

In[3]:=3
f@x
Out[3]=3

以下哪项表达式计算为 g[{a, b, c}]


以下哪项表达式计算为 {{f[a], f[b]}, {f[c], f[d]}}


以下哪项计算为 {{{f[a], f[b]}}, {{f[c], f[d]}}}

© 2019 Wolfram. All rights reserved.