按第二个对象排序缺点列表

标签 sorting lisp

我需要按 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))

您可以使用 sortkey 参数按某个键对列表进行排序:

(sort list #'< :key #'cdr)

Sort 可能破坏性地修改输入列表以创建排序的输出列表。为了防止这种情况,请先复制它:

(sort (copy-list list) #'< :key #'cdr)

关于按第二个对象排序缺点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50531250/

相关文章:

LISP 二项式系数、阶乘

java - 对对象数组列表中的整数进行排序

javascript - 对对象数组进行排序时出错无法分配给对象 '2' 的只读属性 '[object Array]'

algorithm - 查找以随意方式存储的连续增加的子序列

Java 排序集合/api

C++排序 vector 的指针错误

lisp - lisp中的定点组合器

macros - &lisp 宏中的可选参数 : Why does this variable behave like this?

macros - 宏的结果必须是主体中最后一个表达式的值

macros - 构建评估的评估是否等于宏观?