psufngah 发表于 2013-3-23 23:53:31

帮忙把表中元素按指定的顺序排序

本帖最后由 psufngah 于 2013-3-24 10:03 编辑

("DB" "DD" "BP" "PP" "HH")需要按如下表中顺序来排( "HP" "BB" "UE" "HH" "BP" "PP" "SB" "SP" "DB" "CB" "DD" "DE" "CC" "DH")请高手帮忙写点思路。谢谢。

上面第一个表是程序读取出来的,有时不止五个,有时又少于五个,最多的时候和第二个表差不多,但第一个表的顺序不是我想要的,就是不管出几个元素,都需要按照第二个表的素顺序来排列。

ll_j 发表于 2013-3-24 09:30:39

没头没脑的,上面的表是怎样的次序?下面的表又是怎样次序?没有个关系怎么好排?
如果就是你所说的这样的表,直接构建一个不就行了。

lsjj 发表于 2013-3-24 09:59:29

樓主的提問很清楚啊

Andyhon 发表于 2013-3-24 10:47:21

(setq Lstok '("HP" "BB" "UE" "HH" "BP" "PP" "SB" "SP" "DB" "CB" "DD" "DE" "CC" "DH"))
(setq Lst '("DB" "DD" "BP" "PP" "HH"))

(vl-remove-if-not
(function
   (lambda (x) (member x Lst))
)
LstOk
)

Gu_xl 发表于 2013-3-24 10:56:45


(setq lst '( "HP" "BB" "UE" "HH" "BP" "PP" "SB" "SP" "DB" "CB" "DD" "DE" "CC" "DH")
      l '("DB" "DD" "BP" "PP" "HH")
      )
;;排序
(setq l (vl-sort l '(lambda (a b) (< (VL-POSITION a lst) (VL-POSITION b lst)))))

psufngah 发表于 2013-3-24 13:50:57

以上非常感谢!好用

潇湘飞雨 发表于 2013-3-24 16:37:15

还是版主厉害。

sicky111 发表于 2013-10-23 23:20:28

我对楼主提这个问题表示好奇。

llsheng_73 发表于 2013-10-25 22:26:46

本帖最后由 llsheng_73 于 2013-10-25 22:28 编辑

Gu_xl 发表于 2013-3-24 10:56 static/image/common/back.gif

得多向G版学习
看来没事多逛逛,有学到很多东东还可以混积分

spiderman 发表于 2013-10-28 00:10:17

不错,很好的函数。
页: [1]
查看完整版本: 帮忙把表中元素按指定的顺序排序