表处理大全
;;★★★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. AngularJs 入门系列-2 表单验证

    对于日常的开发来说,最常见的开发场景就是通过表单编辑数据,这里涉及的问题就是验证问题. angularjs 内置已经支持了常见的验证方式,可以轻松实现表单验证. 1. 绑定 为了方便,我们在 $sco ...

  2. nohup输入密码后继续后台运行

    Linux/Unix 是真正的多用户,多任务.Linux 提供了 fg 和bg 命令,让你轻松调度正在运行的任务. 假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctr ...

  3. JavaScript实现类的private、protected、public、static以及继承

    JavaScript中的类 JavaScript实际上是一种弱类型语言,与C++和Java等语言不同.因此,在JavaScript中,没有强调类(class)这一概念,但实际运用中,类还是很重要的,比 ...

  4. python默认的是17位小数的精度,但是这里有一个问题,就是当我们的计算需要使用更高的精度(超过17位小数)的时候该怎么做呢?

    1. 使用格式化(不推荐) 1 2 3 >>> a = "%.30f" % (1/3) >>> a '0.3333333333333333148 ...

  5. C语言提供了几个标准库函数 itoa() atoi()

    C语言提供了几个标准库函数C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子: # include <s ...

  6. ArrayEasyFinish

    (1)Plus One 解题思路:模拟现实中做加法的方式,在个位加一,并考虑进位的情况.代码如下: public class Solution { public int[] plusOne(int[] ...

  7. oracle job草稿

    sa -- 声明job DECLARE job2014_12_16 NUMBER; BEGIN DBMS_JOB.SUBMIT(job2014_12_16, -- 这个参数是out类型 'syncv5 ...

  8. unity3d - new 不出的单例

    可能习惯了写单例的朋友,或者常规的单例模式 会这样做 private static Single instance; public static Single Instance(){ if (inst ...

  9. 如何在asp.net中使用多线程及队列,异步处理一个耗时的任务(原创)

    最近想在使用.net 的队列处理一些耗时的工作.经过考虑,需要先设计一个类,类中包含一个静态的队列.主要是写队列和读取队列. public class PaperCalculator { // 用于存 ...

  10. hdu 5791 (DP) Two

    hdu 5791 Two Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...