map 函数
把函数或表达式应用到各个元素,列表保持顺序,集合结果去除重复项。
语法
map(expr, n, list)map(f, list)map(f, list, arguments...)map(x -> expression, list)map(f, set)
参数与选项
expr | 要变换或求值的表达式。 |
|---|---|
var | 变量名称。 |
list | 形如 [1, 2, 3] 的列表字面量。 |
f | 内置函数名、已保存函数、箭头函数或 proc 过程。每个元素作为第一个参数传入;空集合不会调用函数。 |
arguments | 可选的额外参数,在遍历前求值一次,每次调用时放在当前元素之后。 |
set | 形如 {-1, 1, 2} 的有限集合;映射后的重复值仅保留一次。 |
示例
- 映射平方
map(n^2 + 1, n, [1, 2, 3])返回 [2, 5, 10]。 - 映射已保存函数
f := x -> x^2+1; map(f, [1,2,3])返回 [2, 5, 10],同一函数可继续用于其他列表。 - 带额外参数映射
map((x,a) -> x+a, [1,2,3], 10)返回 [11, 12, 13],每个元素都加上固定参数 10。 - 映射条件函数
map(x -> if x>0 then x else -x end if, [-2,0,3])返回 [2, 0, 3],对每个元素分别选择条件分支。 - 映射内联过程
map(proc(x) local y; y:=x+1; y^2 end proc, [1,2,3])返回 [4, 9, 16],y 是各次调用的局部变量。 - 映射集合
map(x -> x^2, {-1,1,2})返回 {1, 4},重复的平方值 1 仅保留一次。 - 映射内置求导函数
map(diff, [x^2,x^3], x)返回 [2*x, 3*x^2],分别对每个表达式关于 x 求导。