按数字和字符对列表进行排序

一世

我在LISP中有清单:

((1 b) (1 a) (2 D) (1 z) (1 t) (2 a) (3 n))

我必须先按数字对其进行排序,如果按字符的字法顺序相等,则输出应为:

((1 a) (1 b) (1 t) (1 z) (2 a) (2 d) (3 n))

我试图对一个参数进行排序,然后对另一个参数进行排序,我该如何对这两个函数进行组合?

;;(sort '((1 b) (1 a) (2 D) (1 z) (1 t) (2 a) (3 n)) #'< :key #'car )
;;(sort '((1 b) (1 a) (2 D) (1 z) (1 t) (2 a) (3 n)) #'string< :key #'second )

有更简单的方法吗?

谢谢

tfb

正如coredump所说,既然您确实需要列表比较功能,那么一种不错的方法是做meta事情:不要编写一个,而是编写一个使比较列表的功能的函数。这是一个这样的功能:

(defun make-list-comparator (&rest predicates)
  (labels ((tails< (l1t l2t pt)
             (let ((< (first pt))
                   (e1 (first l1t))
                   (e2 (first l2t)))
               (cond
                ((funcall < e1 e2) t)
                ((funcall < e2 e1) nil)
                ((and (null l1t) (null l2t) (null pt)) nil)
                ((or (null l1t) (null l2t) (null pt))
                 (error "crashed into the end"))
                (t (tails< (rest l1t) (rest l2t) (rest pt)))))))
    (lambda (l1 l2)
      (tails< l1 l2 predicates))))

现在

> (sort (copy-list '((1 b) (1 a) (2 D) (1 z) (1 t) (2 a) (1)))
        (make-list-comparator
         #'<
         (lambda (s1 s2)
           (string< (string s1) (string s2)))))
((1 a) (1 b) (1 t) (1 z) (2 a) (2 d) (3 n))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按数字部分的顺序对字符串列表进行排序

来自分类Dev

按字符数和字母顺序对列表进行排序

来自分类Dev

按数字顺序对列表进行排序

来自分类Dev

根据r中数字列表的顺序,按升序对字符列表进行排序

来自分类Dev

按字母顺序,数字顺序和特殊字符对字符串数组进行排序

来自分类Dev

按数字的“视觉相似度”对数字列表进行排序

来自分类Dev

按最后 2 位数字对数字列表进行排序

来自分类Dev

用数字和字母对列表进行排序

来自分类Dev

按数字、字符串和日期类型进行角度排序

来自分类Dev

按特定元素和该元素的子字符串对元组列表进行排序

来自分类Dev

在python中的字母后对字符串列表和位置数字进行排序

来自分类Dev

如何按字母顺序对字母数字列表进行排序

来自分类Dev

如何按保存在firestore中的数字对列表进行排序

来自分类Dev

首先按字母顺序对列表进行排序,然后按数字对列表进行排序?

来自分类Dev

Python尝试对列表进行数字排序后按字母顺序对列表进行排序

来自分类Dev

按字符字段在字段内的位置进行数字排序

来自分类Dev

按括号中的数字对字符向量进行排序

来自分类Dev

按包含数字和单词的值对多维数组进行排序

来自分类Dev

如何在Scala中按数字对中的第二对按降序对数字对列表进行排序?

来自分类Dev

按数字对列进行排序?

来自分类Dev

如何按最高编号对字符串列表进行排序

来自分类Dev

按出现频率对(嵌套的)字符串列表进行排序

来自分类Dev

如何按多种条件对字符串列表进行排序

来自分类Dev

Dart:按频率对字符串列表进行排序

来自分类Dev

按索引对字符串列表进行排序

来自分类Dev

按包含字符串的整数对列表进行排序

来自分类Dev

按map值对字符串列表进行排序

来自分类Dev

如何按最高编号对字符串列表进行排序

来自分类Dev

按字符串属性对对象列表进行排序

Related 相关文章

  1. 1

    按数字部分的顺序对字符串列表进行排序

  2. 2

    按字符数和字母顺序对列表进行排序

  3. 3

    按数字顺序对列表进行排序

  4. 4

    根据r中数字列表的顺序,按升序对字符列表进行排序

  5. 5

    按字母顺序,数字顺序和特殊字符对字符串数组进行排序

  6. 6

    按数字的“视觉相似度”对数字列表进行排序

  7. 7

    按最后 2 位数字对数字列表进行排序

  8. 8

    用数字和字母对列表进行排序

  9. 9

    按数字、字符串和日期类型进行角度排序

  10. 10

    按特定元素和该元素的子字符串对元组列表进行排序

  11. 11

    在python中的字母后对字符串列表和位置数字进行排序

  12. 12

    如何按字母顺序对字母数字列表进行排序

  13. 13

    如何按保存在firestore中的数字对列表进行排序

  14. 14

    首先按字母顺序对列表进行排序,然后按数字对列表进行排序?

  15. 15

    Python尝试对列表进行数字排序后按字母顺序对列表进行排序

  16. 16

    按字符字段在字段内的位置进行数字排序

  17. 17

    按括号中的数字对字符向量进行排序

  18. 18

    按包含数字和单词的值对多维数组进行排序

  19. 19

    如何在Scala中按数字对中的第二对按降序对数字对列表进行排序?

  20. 20

    按数字对列进行排序?

  21. 21

    如何按最高编号对字符串列表进行排序

  22. 22

    按出现频率对(嵌套的)字符串列表进行排序

  23. 23

    如何按多种条件对字符串列表进行排序

  24. 24

    Dart:按频率对字符串列表进行排序

  25. 25

    按索引对字符串列表进行排序

  26. 26

    按包含字符串的整数对列表进行排序

  27. 27

    按map值对字符串列表进行排序

  28. 28

    如何按最高编号对字符串列表进行排序

  29. 29

    按字符串属性对对象列表进行排序

热门标签

归档