我想组合两个列表的所有可能组合,为此我使用 mapcar
CL-USER> (mapcar #'(lambda (x) (mapcar #'(lambda (y) (list x y)) '(aa bb cc dd))) '(a b c))
(((A AA) (A BB) (A CC) (A DD)) ((B AA) (B BB) (B CC) (B DD))
((C AA) (C BB) (C CC) (C DD)))
答案是正确的,但我得到了一个嵌套列表,我该如何解决这个问题。我不想将该列表展平一级,我对 mapcar 的使用不当,但我不知道如何解决这个问题
最佳答案
替换顶级 mapcar
with mapcan
,你就是金子:
(mapcan (lambda (x)
(mapcar (lambda (y) (list x y))
'(aa bb cc dd)))
'(a b c))
==> ((A AA) (A BB) (A CC) (A DD)
(B AA) (B BB) (B CC) (B DD)
(C AA) (C BB) (C CC) (C DD))
关于common-lisp - 通用 lisp 中的嵌套 mapcar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45860437/