CADWarrior 发表于 2022-7-6 09:45:56

排序列表(2次)

好了,伙计们,你们有一个让我抓狂的难题。
我目前的情况是,我需要以特定的顺序x2列出以下列表
第一个顺序需要在列表的(第n个x(第n个0))部分中设置。列表的这部分需要按字母顺序排列,就像它当前在这个列表中一样。(正好从那边出来)
 
第二个排序将发生在列表的(第n个1(第n个x(第n个1)))部分,并且它需要在列表的列表中按数字顺序排列。
正在尝试各种各样的东西,但无法解决从VL排序到VL的所有问题。请删除最小值并返回附加值,然后重试(变得非常混乱)
 
在这一切都是秩序,它将需要保存回它自己。
 
当前结构

(LIST(LIST)(LIST(LIST)))

当前设置

'((("W1" 18.0 10.5 "X")
                        (("W2" 282.0)
                        ("W3" 2.0)
                        ("W6" 205.5)
                        ("W7" 78.5)))
(("W2" 300.0 12.5 "Y")
                        (("W1" 2.0)
                        ("W8" 120.0)))
(("W3" 20.0 12.5 "Y")
                        (("W1" 2.0)
                        ("W8" 120.0)))
(("W4" 98.0 68.0 "X")
                        (("W5" 62.0)
                        ("W6" 125.5)
                        ("W7" 1.5)))
(("W5" 160.0 69.5 "Y")
                        (("W4" 1.5)
                        ("W8" 63.0)))
(("W6" 223.5 12.5 "Y")
                        (("W1" 2.0)
                        ("W4" 55.5)
                        ("P2" 37.5)))
(("W7" 96.5 12.5 "Y")
                        (("W1" 2.0)
                        ("W4" 55.5)
                        ("P1" 37.5)))
(("W8" 18.0 132.5 "X")
                        (("W2" 282.0)
                        ("W3" 2.0)
                        ("W5" 142.0)))
(("P1" 68.0 50.0 "X")
                        (("W7" 28.5)))
(("P2" 225.0 50.0 "X")
                        (("W6" 1.5))))
 
你们能在这方面提供任何帮助,或者为我指出正确的方向,都会帮上大忙。
 
提前谢谢你。
 
CadWarrior公司

alanjt 发表于 2022-7-6 10:01:32

??
 
(defun _sortAlph (lst)
(vl-sort
   (mapcar
   (function
       (lambda (x) (cons (car x) (vl-sort (cdr x) (function (lambda (a b) (< (car a) (car b)))))))
   )
   lst
   )
   (function (lambda (a b) (< (caar a) (caar b))))
)
)


(defun _sortNum (lst)
(vl-sort
   (mapcar
   (function
       (lambda (x)
         (cons
         (car x)
         (vl-sort
             (cdr x)
             (function (lambda (a b) (< (distof (substr (car a) 2)) (distof (substr (car b) 2)))))
         )
         )
       )
   )
   lst
   )
   (function (lambda (a b) (< (distof (substr (caar a) 2)) (distof (substr (caar b) 2)))))
)
)

alanjt 发表于 2022-7-6 10:11:54

可能不需要距离。。。
 
(defun _sortNum (lst)
(vl-sort
   (mapcar
   (function
       (lambda (x)
         (cons (car x)
               (vl-sort (cdr x)
                        (function (lambda (a b) (< (distof (substr (car a) 2)) (substr (car b) 2))))
               )
         )
       )
   )
   lst
   )
   (function (lambda (a b) (< (substr (caar a) 2) (substr (caar b) 2))))
)
)

CADWarrior 发表于 2022-7-6 10:17:25

谢谢你的帮助Alanjt
好的_sortalph很管用,但我想你误解了_sortnum,这是我的错。
请在下面了解更多信息。
 
原始列表

((("W1" 18.0 10.5 "X")
                        (("W2" 282.0)
                        ("W3" 2.0)
                        ("W6" 205.5)
                        ("W7" 78.5)))

 
新建列表
 

((("W1" 18.0 10.5 "X")
                        (("W3" 2.0)
                        ("W7" 78.5)
                        ("W6" 205.5)
                        ("W2" 282.0)))

 
希望这能澄清一点。

Lee Mac 发表于 2022-7-6 10:28:08


 
(defun _Sort ( lst )
(mapcar
   (function
   (lambda ( item )
       (list (car item)
         (vl-sort (cadr item)
         (function
             (lambda ( a b ) (< (cadr a) (cadr b)))
         )
         )
       )
   )
   )
   lst
)
)

alanjt 发表于 2022-7-6 10:36:38

?
(defun _sortNum (lst)
(vl-sort
   (mapcar
   (function
       (lambda (x)
         (cons (car x)
               (vl-sort (cdr x)
                        (function (lambda (a b) (< (cadr a) (cadr b))))
               )
         )
       )
   )
   lst
   )
   (function (lambda (a b) (< (caar a) (caar b))))
)
)
 
无法测试。

CADWarrior 发表于 2022-7-6 10:53:54

非常感谢。非常感谢。非常感谢。非常感谢。非常感谢。
感谢Alanjt按字母顺序正确排序。
感谢李·麦克正确的数字排序。
 
现在,如果你们能给我解释一下,我将非常感激,因为在这个时候,我无法开始思考如何工作这一点。这种排序方式让我大吃一惊,我习惯了MySQL之类的基于表的程序
页: [1]
查看完整版本: 排序列表(2次)