我想组合两个列表的所有可能组合,为此我使用 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/

10-13 07:36