我需要按 cdr 元素对 cons 元素列表进行排序。 例如:
(aaa.4 bbb.2 ccc.6 ddd.9 eee.3) => (bbb.2 eee.3 aaa.4 ccc.6 ddd.9)
请帮助我,我刚刚开始学习 Lisp。
最佳答案
这个(aaa.4 bbb.2 ccc.6 ddd.9 eee.3)
不是一个conses列表,而是一个名为"aaa.4"<的符号列表
, "bbb.2"
等
你的文字暗示的是这样的:
((aaa . 4)
(bbb . 2)
(ccc . 6)
(ddd . 9)
(eee . 3))
您可以使用 sort
的 key
参数按某个键对列表进行排序:
(sort list #'< :key #'cdr)
Sort
可能破坏性地修改输入列表以创建排序的输出列表。为了防止这种情况,请先复制它:
(sort (copy-list list) #'< :key #'cdr)
关于按第二个对象排序缺点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50531250/