phoenixdjq 发表于 2014-11-27 09:22:03

表的排序问题

关于表排序的问题,可以采用如下方法:
Command: (setq lst '((3 2)(1 3) (1 4) (1 2) (2 4)(2 5) (2 3)(8 9)(7 5)))
((3 2) (1 3) (1 4) (1 2) (2 4) (2 5) (2 3) (8 9) (7 5))

利用vl-sort将表按x从小到大排序:
Command: (setq rc (vl-sort lst '(lambda (s1 s2)(< (car s1)(car s2)))))
((1 3) (1 4) (1 2) (2 4) (2 5) (2 3) (3 2) (7 5) (8 9))

得到这样的结果后,能否将x相同的,再按照y值从小到大进行排序,x还是由小到大排序
最后实现这样的结果
((1 2) (1 3) (1 4) (2 3) (2 4) (2 5) (3 2) (7 5) (8 9))



请高手指点,谢谢!

fan_zh 发表于 2014-11-27 09:38:53

借花献佛

命令: (HH:SSPTS:SORT lst "xy" 0.5)
((1 2) (1 3) (1 4) (2 3) (2 4) (2 5) (3 2) (7 5) (8 9))

USER2128 发表于 2014-11-27 09:40:35

(setq lst '((3 2)(1 3) (1 4) (1 2) (2 4)(2 5) (2 3)(8 9)(7 5)))
(setq rc (vl-sort lst
'(lambda (s1 s2) (cond((and (= (car s1) (car s2)) (< (cadr s1)(cadr s2))) t)
      (t(< (car s1)(car s2)))))))

;===> ((1 2) (1 3) (1 4) (2 3) (2 4) (2 5) (3 2) (7 5) (8 9))

phoenixdjq 发表于 2014-11-27 11:41:49

两位的回复已收到,我去研究一下,感谢感谢!

wzg356 发表于 2014-11-27 14:27:52

fan_zh 发表于 2014-11-27 09:38 static/image/common/back.gif
借花献佛

命令: (HH:SSPTS:SORT lst "xy" 0.5)


好东西,收下聊
页: [1]
查看完整版本: 表的排序问题