我正在编写一个需要两个列表的函数,需要创建一个这样的新列表:
(a b) (c d e f) --> ((a b c) (a b d) (a b e) (a b f))
,即第二个列表的每个元素作为元素添加到第一个列表中,第一个列表中的每个元素都有一个元素。
我无法弄清楚如何做到这一点。我尝试过各种变体:
(map list (list1) (list2))
没有成功。
感谢任何建议。
答案 0 :(得分:2)
使用带有多个参数的map
将并行迭代列表,这不是您想要的。
您想要的基本上是将第一个列表添加到第二个列表中的每个元素。所以你需要这样的东西:
(map (lambda (x) (append list1 (list x))) list2)
请注意,附加到列表末尾的是O(n)
操作,因此如果您可以重构算法,以便可以在列表的开头添加每个项目,那就更好了。