2011-02-27 94 views
1

列表映射到列表我写一个函数,它接受两个列表,需要作出新的名单如下:如何计划

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

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

我不知道如何做到这一点。我试过以下变体:

(map list (list1) (list2)) 

没有成功。

任何意见表示赞赏。

+0

您尝试使用哪种语言? – 2011-02-27 02:21:12

+0

@willytate:根据标签和标题,他正在试图制定计划。 – sepp2k 2011-02-27 02:24:33

回答

2

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

你想要的基本上是在第二个列表中的每个元素前面加上第一个列表。所以,你想是这样的:

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

注意,追加到列表的末尾是O(n)操作,所以如果你能调整你的算法,这样就可以在列表的开头预先计划每一项目,这将会更好。

+0

谢谢。地图保存顺序吗? – Schemer 2011-02-27 02:47:37

+0

@Schemer:是的,它的确如此。 – sepp2k 2011-02-27 02:48:13