如何将列表映射到Scheme中的列表

时间:2011-02-27 02:08:13

标签: list scheme map-function

我正在编写一个需要两个列表的函数,需要创建一个这样的新列表:

(a b) (c d e f) --> ((a b c) (a b d) (a b e) (a b f))

,即第二个列表的每个元素作为元素添加到第一个列表中,第一个列表中的每个元素都有一个元素。

我无法弄清楚如何做到这一点。我尝试过各种变体:

(map list (list1) (list2))

没有成功。

感谢任何建议。

1 个答案:

答案 0 :(得分:2)

使用带有多个参数的map将并行迭代列表,这不是您想要的。

您想要的基本上是将第一个列表添加到第二个列表中的每个元素。所以你需要这样的东西:

(map (lambda (x) (append list1 (list x))) list2)

请注意,附加到列表末尾的是O(n)操作,因此如果您可以重构算法,以便可以在列表的开头添加每个项目,那就更好了。