表处理大全
;;★★★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. 排列 && 组合

    最近编程经常遇到需要 排列&&组合(求子集) 的问题:遂整理一下. 1. 数字的排列与组合(递归):O(n!),O(nC(n,k)) * O(n) #include <stdio ...

  2. 22. Surrounded Regions

    Surrounded Regions Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A ...

  3. HDFS--(HA)初始化与启动

    1.启动zk 2.启动journalnode:         hadoop-daemons.sh start journalnode 3.格式化zkfc--让在zookeeper中生成ha节点    ...

  4. 【练习】flashback基于scn的闪回查询

    1.创建表dept1: :: SCOTT@ORA11GR2>create table dept1 as select * from dept; Table created. :: SCOTT@O ...

  5. Hadoop伪分布式配置:CentOS6.5(64)+JDK1.7+hadoop2.7.2

    java环境配置 修改环境变量 export JAVA_HOME=/usr/java/jdk1.7.0_79 export PATH=$PATH:$JAVA_HOME/bin export CLASS ...

  6. JS宝典

    hammerjs 终止事件流 window.event.returnValue = false; return false; 页面显示调用方法.类似viewWillApper IOS和android表 ...

  7. The Magic only works with total devotion of one's heart

    The Magic only works with total devotion of one's heart All tools and equipments are useless without ...

  8. 搭建nexus后,进入首页的时候出现warning: Could not connect to Nexus.错误

    nexus出现这种问题,一般是版本太旧,换一个高版本的nexus就能解决了.

  9. 常用freemarker使用文档

    设置价格格式 <#setting number_format = "currency" /> <#assign price = 42 /> ${price} ...

  10. COM的永久接口

    COM的永久接口