表的排序问题
有一表,形式如下:((“A1” “B3”1 2 3 4)
(“A1” “B7”2 3 4 5)
(“A2” “B4”3 2 5 7)
(“A2” “B3”1 2 3 4)
(“A3” “B7”2 3 4 5)
(“A3” “B4”3 2 5 7)
。。。
)
现要对表进行排序,先按子表中的第一项排序,如果第一项相同,则按第二项进行排序,
第一项和第二项不会同时相同。
请问大家有没有好的方法。
看看vlisp的帮助文件,也许有直接的函数可用欧,呵呵
你是要思路还是现成的函数,我没有发现有现成的函数。
秋枫曾提供:
(setq QQ '(("A1" "B3" 1 2 3 4)("A3" "B4" 3 2 5 7)
("A1" "B7" 2 3 4 5)
("A5" "B4" 3 2 5 7)
("A2" "B3" 1 2 3 4)
("A5" "B1" 3 2 5 7)
("A3" "B7" 2 3 4 5)
)
)
(setq QQ (vl-sort QQ
(function (lambda (P1 P2)
(cond ((< (car P1) (car P2)) t)
((and (= (car P1) (car P2))
(< (cadr P1) (cadr P2))
)
t
)
(t NIL)
)
)
)
)
)
谢谢大家!在这里我不仅解决了问题,而且还学到了新的方法。
再次感谢大家的帮助。vl-sort还不算是现成的啊?
用vl-sort要增加一次重复元过滤。
菜哥说的是!
[此贴子已经被前生于2002-11-14 16:13:38编辑过]
页:
[1]