2011-02-27 88 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