CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

vl-sort-i(AutoLISP)

2023-1-7 15:27| 发布者: admin| 查看: 255| 评论: 0|来自: AutoCAD

摘要: 根据给定的比较函数对列表中的元素进行排序,并返回元素索引号

根据给定的比较函数对列表中的元素进行排序,并返回元素索引号

支持的平台:视窗和 Mac OS

签名

(vl-sort-i lst comparison-function)
lst

类型:列表

要排序的任何列表。

比较功能

类型:子例程或符号

比较函数。这可以是接受两个参数并返回(或任何非值)的函数,如果第一个参数在排序顺序中先于第二个参数。比较函数值可以采用以下形式之一:Tnil

  • 符号(函数名称)
  • '(LAMBDA (A1 A2) ...)
  • (FUNCTION (LAMBDA (A1 A2) ...))

返回值

类型:列表

包含lst 元素的索引值的列表,按比较函数指定的顺序排序。重复的元素将保留在结果中。

例子

按降序对字符列表进行排序:

(vl-sort-i '("a" "d" "f" "c") '>)
(2 1 3 0)

排序列表顺序为 “f” “d” “c” “a”;“f”是原始列表中的第 3 个元素(索引 2),“d”是列表中的第 2 个元素(索引 1),依此类推。

按升序对数字列表进行排序:

(vl-sort-i '(3 2 1 3) '<)
(2 1 3 0)

请注意,结果列表中会考虑 3 的两个匹配项。

Y坐标对 2D 点列表进行排序:

(vl-sort-i '((1 3) (2 2) (3 1))
         (function (lambda (e1 e2)
                (< (cadr e1) (cadr e2)))))
(2 1 0)

对符号列表进行排序:

(vl-sort-i
   '(a d c b a)
   '(lambda (s1 s2)
    (< (vl-symbol-name s1) (vl-symbol-name s2))))
(4 0 3 2 1)

请注意,两者均在结果列表中说明。a


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 13:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部