我想结合两个列表的所有可能组合,为此我使用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)))
Run Code Online (Sandbox Code Playgroud)
答案是正确的,但我得到一个嵌套列表,我该如何解决这个问题.我不想将该列表压平一层,我对mapcar的使用很糟糕,但我无法弄清楚如何解决这个问题
更换顶层mapcar与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))
Run Code Online (Sandbox Code Playgroud)