Map
Map[f,expr] 或 f/@expr
将 f 应用到 expr 中第一层的每个元素.
Map[f,expr,levelspec]
将 f 应用到 levelspec 指定的 expr 的部分中.
更多信息和选项
- Map 使用标准的层次指定:
-
n 从第 1 层到第 n 层 Infinity 从第 1 层到 Infinity {n} 仅在第 n 层 {n1,n2} 从第 n1 层到第 n2 层 - 在 Map 中 levelspec 的默认值是 {1}.
- 正层的 n 由指标 n 指定的 expr 所有部分组成.
- 负层的-n 由带有深度 n 的 expr 所有部分组成.
- 层 –1 由不带子集的数值、符号和其它对象组成.
- 层 0 对应于整个表达式.
- 选项设置 Heads->True,Map 也作用于表达式的头部和其它部分.
- Map 通常高效地构建全新表达式然后进行计算.
- 如果 expr 是一个 Association 对象,Map[f,expr] 把 f 应用于相关性的数值中.
- 如果 expr 是一个 SparseArray 对象或结构化数组,Map[f,expr] 会将 f 应用于数值或 expr 中出现的子数组. »
- Map[f][expr] 等价于 Map[f,expr].
- Parallelize[Map[f,expr]] 或 ParallelMap[f,expr] 在所有子内核上并行计算 Map[f,expr]. »
范例
打开所有单元关闭所有单元基本范例 (5)
把函数映射到 Association 的数值中:
范围 (11)
层次指定 (6)
表达式的类型 (5)
不论表达式的 head 为何种形式,都可使用 Map:
可将 Map 用于稀疏数组:
将 Map 与结构化数组一起使用,如 SymmetrizedArray:
通过 Map 将函数应用于类型为 QuantityArray 的结构化数组的元素:
映射于嵌套 Association 的第二层:
映射于 Association 的几个层级:
属性和关系 (9)
有几个自变量的函数可以用 MapThread 作用:
MapIndexed 将元素的指标传递到作用函数中:
属性为 Listable 的函数被自动映射:
ParallelMap 并行计算 Map:
Map 可被自动并行化,实际上相当于使用 ParallelMap:
Map 将一个表达式封装到另一个表达式的组成部分外面:
Comap 将部分表达式封装到另一个表达式外面:
Map maps a function over the values in an association:
KeyMap maps a function over the keys in an association:
KeyValueMap maps a function over the keys and values in an association (and returns a list):
AssociationMap maps a function over the rules in an association:
Map[f,assoc] is equivalent to AssociationThread[Keys[assoc]Map[f,Values[assoc]]]:
可能存在的问题 (1)
Map 缺省下从第 1 层开始,因此不能将函数应用到整个表达式上:
文本
Wolfram Research (1988),Map,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Map.html (更新于 2014 年).
CMS
Wolfram 语言. 1988. "Map." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2014. https://reference.wolfram.com/language/ref/Map.html.
APA
Wolfram 语言. (1988). Map. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Map.html 年