Erh*_*mir 7 lisp sorting list common-lisp
我是Lisp的新手,我想学习Lisp编程.我想对从文本文件中读取的一些列表进行排序,如下面的形式:
(a 120 135 124 124)
(b 120 135 124 124)
(c 120 135 124 124)
Run Code Online (Sandbox Code Playgroud)
根据第一个整数元素或者第二个或第三个元素对它们进行排序的最佳方法是什么?
我有以下想法:
是否有更合适的数据结构来实现这一目标,可能就像Java中的Collections一样,它采用包含排序逻辑和自动填充排序的可比对象?
非常感谢你.
Xac*_*ach 10
标准sort函数接受一个:key参数,该参数可用于从对象中提取值以用作排序键.对于您的示例,如果您在调用的列表中包含文件中的每个列表objects,则以下内容将按objects第一个整数元素进行破坏性排序并返回已排序的列表:
(sort objects #'< :key #'second)
Run Code Online (Sandbox Code Playgroud)
有关Common Lisp 函数的精确说明,请参见http://l1sp.org/cl/sortsort.