Dolist 与 Domatrix
在定义了函数之后,即使该函数未针对列表定义,也可以将其应用于一组参数值。 这是通过 dolist 和 domatrix 关键字实现的。这些语句的格式为:
例如,假设您已定义了函数:
接下来,您想将此函数应用于名为 Points 的列表中的每个元素:
您可以使用以下表达式来实现:
其结果为 [9,17,27,39,53]。
如果您提供的函数只接受一个参数 f(x),则 dolist 和 domatrix 的作用相同。即:
例如:
如果您提供的函数接受多个参数 f(x,y),则 domatrix 会导致应用所有参数的所有排列,而 dolist 则将参数列表视为并行的:
dolist f(a,b) = [
f(a[0],b[0]),
f(a[1],b[1]),
f(a[2],b[2]),
...
]
domatrix f(a,b) = [
[f(a[0],b[0]),f(a[0],b[1]),f(a[0],b[2]),...],
[f(a[1],b[0]),f(a[1],b[1]),f(a[1],b[2]),...],
[f(a[2],b[0]),f(a[2],b[1]),f(a[2],b[2]),...],
...
]
例如,如果您将 f(x,y) 定义为
那么,表达式
生成 10 个元素的向量
然而,表达式
生成 100 个元素的矩阵
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
您可以将 dolist 和 domatrix 关键字与任何函数一起使用,包括原语和用户定义的函数。此外,列表参数可以包含其他列表或矩阵作为元素。也就是说,即使 A、B 和 C 本身是列表或矩阵,dolist F([A,B,C]) = [F(A),F(B),F(C)] 仍然成立。