1

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

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

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

我不知道该怎么做。我尝试了以下变化:

(map list (list1) (list2))

没有成功。

任何建议表示赞赏。

4

1 回答 1

2

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

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

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

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

于 2011-02-27T02:23:26.693 回答