Aka*_*abu -1 lisp elisp common-lisp
我想对((A 4)(B 2)(C 3)(D 5))进行排序,使得结果为((D 5)(A 4)(C 3)(B 2)).我有正常的排序技术,但它不适用于子列表.
我猜你的问题是你要按每个子列表中的数字排序.排序过程采用名为"key"的关键字参数来指定要在[ 0 ] 上排序的内容.在这种情况下,您希望对每个列表的第二个元素进行排序.如果您提供的列表存储在名为"xs"的变量中,那么您将如何操作:
(sort xs #'> :key #'second)
Run Code Online (Sandbox Code Playgroud)
要小心,因为排序是破坏性的,所以你可能想要的是:
(sort (copy-list xs) #'> :key #'second)
Run Code Online (Sandbox Code Playgroud)
编辑:如果要对元素进行配对,则必须编写单独的过程来执行此操作.基本版本看起来像这样:
(defun pair (xs)
(if (null xs)
'()
(cons (list (first xs) (second xs))
(pair (rest (rest xs))))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |