表处理大全
;;★★★01.创建表★★★
(setq lst '());;创建一个空表
(list 1 2 3 4) '(1 2 3 4) ;;构造表的两种形式
(vl-list* 1 "TT" 2);;构造表,如果最后一个参数是原子则返回点对(1 "TT" . 2),如果只有单一原子则返回原子,如果最后一个参数是表则返回表

;;★★★02.表元素获取和表修改更新★★★
(car '(1 2 3 4));;获取表的第一个元素1
(cdr '(1 2 3 4));;获取去掉第一个元素1后的表'(2 3 4)
(caddr '(1 2 3 4));;a和d的组合获取第三个元素,从右到外左d再d再a,也就是先去掉第一个元素后的表,再去掉第一个元素后的表,再取第一个元素。
(last '(1 2 3 4));;获取表最后一个元素4
(nth 2 '(1 2 3 4));;获取表中第三个元素3,nth的第一个参数是表中序号,从0开始
(append '(1 2 3 4) (list 5));;多个表的元素组成一个表'(1 2 3 4 5)
(cons 0 '(1 2 3 4 5));;将元素0插入表头'(0 1 2 3 4 5);如果第二个参数不是表则构成点对,比如(cons '(1 2) 3) 返回((1 2) . 3)
(reverse '(0 1 2 3 4 5));;反转表中元素'(5 4 3 2 1 0)
(assoc 10 entlst);;根据表内第一层子表的第一个元素搜索并返回这个子表
(subst '(1 123) '(1 234) lst);;用'(1 123)替换表lst中的'(1 234)

;;★★★03.表元素处理★★★
(length '(1 2 3 4));;表元素的个数4,如果是点对表则返回错误
(vl-list-length '(1 2 3 4));;返回表的元素个数,如果是点对表则返回nil
(vl-position 3 '(1 2 3 4));;返回元素在表中的索引位置,从0开始。如果不在表中,返回nil
(listp '(1 2 3));;判断是否是表,是表返回T,否则返回nil
(vl-consp '(1 2 3));;判断表是否有元素,有则返回T,无则返回nil
(member 2 '(1 2 3 4));;返回第一个参数表达式在第二个参数表中开始出现后的表(2 3 4)
(vl-member-if '(lambda (x) (= (cdr x) "CIRCLE")) lst2);;将表中每一个元素传如表达式,如果不是nil则返回从这个元素开始的表。如果lst2是圆的组码表,则返回(0 . "CIRCLE")和后面子表的表((0 . "CIRCLE") (330 . <图元名: 7ef93fa8>) (5 . "7F") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbCircle") (10 126.404 159.429 0.0) (40 . 42.1645) (210 0.0 0.0 1.0))
(vl-member-if-not 测试表达式 表);;此函数是要返回nil,而vl-member-if是要非nil
(vl-some '(lambda (x) (if (>= x 4) x)) '(1 2 3 4 5));;将表的每个元素传给测试表达式,如果返回值非nil则返回这个元素经过测试表达式的结果(停止后面元素的传递执行)。如果都是nil,则返回nil
(vl-remove-if '(lambda (x) (<= x 2)) '(1 2 3 4 5));;将每个元素传给测试表达式,如果非nil,则保留这些元素(3 4 5)
(vl-remove-if-not 测试表达式 表);;与vl-remove-if相反
(vl-remove 2 '(1 2 3 4));;移除表中某元素(1 3 4)

;;★★★04.处理表内所有元素★★★
(foreach tempt lst [(表达式)]...);;遍历表内元素
(mapcar '(lambda (x) (+ x 1)) '(1 2 3));;表内每一个元素单独执行lambda表达式后再返回为表(2 3 4)
(apply '+ '(1 2 3));;将表中所有元素同时传入表达式,返回表达式执行后的结果6
(vl-every '(lambda (x) (> x 0)) '(1 2 3));;将表中每个元素传入表达式,每个元素传入表达式执行后值均为非nil时才返回T
(vl-string->list "你好啊1");;将字符串转换为对应ascii码表(196 227 186 195 176 161 49),汉字用两个数表示,196 227 表示"你"
(vl-list->string '(196 227 49));;将表示字符串的ascii码数值表转换为对应字符串"你1"
(vl-sort '(1 3 2 1) '<);;表内元素排序,注意如果出现两个元素则排序后只有一个(1 2 3)
(vl-sort-i '(1 3 2 1) '<);;根据排列方法(从大到小或者从小到大)排序,列出元素索引表(从0开始)(3 0 2 1)

【Visual Lisp】表处理专题的更多相关文章

  1. 【Visual Lisp】人机交互与数据处理(表除外)-lisp

    ;;本专题所讲述的内容是人机交互以及常规数据处理技术;;★★★01.人机交互★★★;;△△△键盘输入交互△△△(getint "请输入整数");;从键盘输入整数,如果不是整数则重复 ...

  2. 在Visual Lisp中处理自动化错误

    Handling Automation errors in Visual LISP 翻译自原文Kean's blog:http://through-the-interface.typepad.com/ ...

  3. 【Visual Lisp】Visual Lisp属性与方法

    说明:Visual Lisp属性的获取.赋值和方法的执行有多种形式.然而对于初学者来说一次性就要全部掌握显然是没有必要的,有时候每种方法都是通用的功能都一样我们就没有必要把所有方法都记住.我们只需要掌 ...

  4. 【Visual Lisp】图元选择集专题

    图元选择集专题;;★★★01.选择集操作★★★(setq ss (ssadd));;创建一个空选择集(ssadd (car(entsel)) ss);;将点取的图元添加到ss选择集中,可以不用setq ...

  5. 【Visual Lisp】块专题

    ;;关于块 ;;(0)模型空间→块表记录→块图元:顶层的是模型空间→模型空间下有很多图元和一些块表记录→块表记录又有很多图元(此时块表记录就相当于模型空间),一个块表记录可以有多个insert块→同一 ...

  6. 【Visual Lisp】两种出错处理方式

    两种出错处理方式:一种是对出错函数进行重定义,一种是对错误进行捕捉处理. ;;============================================================= ...

  7. 【Visual Lisp】驱动器、目录、文件和注册表

    ;;驱动器.目录.文件.和注册表;;★★★01.获取并创建驱动器盘符组成的表★★★(setq Drives (vlax-get-property (vlax-create-object "S ...

  8. 【Visual Lisp】变体与安全数组

    (vlax-make-variant) ;;创建一个未初始化的变体 ;;01.整型值变体(setq myvar (vlax-make-variant 10)) ;;创建整型值变体,返回 #<va ...

  9. Visual Lisp获得网络时间的方法

    (defun c:tt (/ ie-obj) (setq ie-obj (vlax-get-or-create-object "Msxml2.xmlhttp")) ) (vlax- ...

随机推荐

  1. AX2012 referencegroup

    用referencegroup 1.添加EDT,refrecid 2.修改autoidentification 3. 可以直接拖refrecid字段出来,就是referencegroup了

  2. WinCE6.0多国语言软键盘

    N久以前写过一篇<WinCE下自定义的大软键盘>,这个自定义软键盘就是为RM905a+项目来做的.RM905a+的系统分辨率是640*480,WinCE原生键盘小的太小,大的又太大.所以就 ...

  3. MVC4.0中项目发布遇到IE11时session存入URL中,导致记不住密码的问题

    ///MVC4.0中项目发布遇到IE11时session存入URL中,导致记不住密码的问题,在webconfig中配置<system.web><authentication mode ...

  4. 配置VS使用winteracter

    一.winteracter是什么?为什么要用VS代替wide?winteracter 是一款强大的 Fortran 图形界面函数库,可方便的用 Fortran 生成GUI界面,对话框,菜单,绘图等操作 ...

  5. maven 加入本地jar包

    Apache Maven,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建.报告和文档等步骤.曾是Jakarta项目的子项目,现 ...

  6. C++ JsonCpp 使用(含源码下载)

    C++ JsonCpp 使用(含源码下载) 前言 JSON是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择JSON的全称为:JavaScri ...

  7. mysql处理海量数据时的一些优化查询速度方法

      最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法. 由于在参与的实际项目中发现当mysql表的数据量达到百万级时,普通SQL查询效率呈直线下降,而且如果w ...

  8. 64 位 Ubuntu 下 android adb 不可用解决方法

    解决方案: 安装ia32-libs 在终端执行 sudo apt-get install ia32-libs 其间会提示所依赖的某些包不存在,直接 sudo apt-get 安装即可.

  9. 先进先出集合queue

    先进先出集合queue Enqueue添加到集合最后 Dequeue移除集合第一个对象并返回

  10. git撤销commit

    请参考该文章:http://www.cnblogs.com/ningkyolei/p/5026011.html 场景: 不小心commit了一个不应该commit的修改,但是还没有push,想撤销那个 ...