地图
Scheme 中的 map 函数用于将过程应用于列表(或多个列表)的每个元素,并返回包含结果的新列表。这使其成为转换数据的理想选择。
map 最简单的形式如下所示:
(map procedure list)- 过程:应用于列表中每个元素的函数。
- 列表:其元素将被转换的列表。
示例:将每个元素加倍
(define (double x)
(* x 2))
(map double (list 1 2 3 4))- 此处,函数
double应用于列表(1 2 3 4)的每个元素。 - 结果是一个新列表,其中每个元素都加倍。
输出:(2 4 6 8)
它是如何运作的
创建新列表:
map将提供的过程应用于列表的每个元素并将结果收集到新列表中。
转换数据:
- 它主要用于数据转换而不是执行副作用。
示例:与多个列表一起使用
如果提供了多个列表,map 会处理每个列表中的相应元素。
(define (sum x y)
(+ x y))
(map sum (list 1 2 3) (list 4 5 6))- 函数
sum添加两个列表中的相应元素,并将结果作为新列表返回。
输出:(5 7 9)
总结
map函数是一个强大的工具,用于通过对每个元素应用过程来转换列表。- 与
for-each不同,map生成一个新列表,其中包含应用该过程的结果。 - 它支持多个列表,允许对它们进行元素级操作。
通过使用 map,您可以高效地创建数据的转换版本,同时保持原始列表不变。