过去两周我一直在慢慢学习Lisp。我遇到过Lisp并行执行两个循环的情况,而不是我的目标。如果我理解正确,我想要实现的将按顺序分类。为了让您了解会发生什么,我们可以看看以下内容:
(loop for x in '(a b c d e)
for y in '(1 2 3 4 5)
collect (list x y))
使用这种类型的编码,可以得到:
((A 1) (B 2) (C 3) (D 4) (E 5))
但我正在寻求的是:
((A 1) (A 2) (A 3) (A 4) (A 5) (B 1) (B 2) (B 3) and so on
我需要使用Loop更改以获得此类所需结果? 如果我在使用术语"顺序"时出错了,请纠正我。我一直在阅读它,但是我有点难以理解这一点。
答案 0 :(得分:5)
您需要嵌套循环:
(loop for x in '(a b c d e)
nconc (loop for y in '(1 2 3 4 5)
collect (list x y)))