笔记~elisp列表操作函数

这篇笔记,说明elisp相关的列表操作函数

(注,CAR是Contents of the Address part of the Register,表示列表的头一个元素;CDR是Contents of the Decrement part of the Register)

这种命名属于历史遗留问题.

 

*(cons  CAR CDR)

---将返回一个新的列表(CAR CDR),CAR表示列表的头一个部分,CDR表示列表除CAR的其余部分,后面还有"car,cdr"函数的意思也是这个.

说明,1)CDR至少是个空列表.2)不改变CDR

---示例

(cons 1 '(2 3)) => (1 2 3)

 

*(car LIST)

---返回列表的头元素,可能是一个列表,原子或nil.不改变原LIST.

---示例

(car '(a b c)) => a

 

*(cdr LIST)

---返回除头元素以外的剩余列表.不改变原LIST

---示例

(cdr '((1 2) 3)) => (3)

 

*(nthcdr N LIST)

---对LIST执行N次cdr操作后,返回的剩余列表.不改变原LIST

---示例

(nthcdr 2 '(1 (2 3) 4)) => (4)

 

*(setcar LIST newCAR)

---将LIST的CAR设置为newCAR,执行返回newCAR.

改变原LIST

---示例

(setq list '(1 2 3)) => (1 2 3)

(setcar list 'a) => a

list => (a 2 3)

 

*(setcdr LIST newCDR)

---将LIST的CDR部分设为newCDR,执行返回newCDR.

改变原LIST

---示例

(setq list '(1 2 3)) => (1 2 3)

(setcdr list (a b)) => (a b)

list => (1 a b)

(setcdr list ()) => nil

list => (1)

(setcdr list ()) => nil

list => (1)  ;;可见,setcdr对列表第一項无效,即使只有一项时

 

*(length LIST/STRING)

---返回列表元素个数或者字符串的字符数

---示例

(length '(1 2 3)) => 3

(length "海上升明月") => 5

转载于:https://www.cnblogs.com/bronte/articles/2491073.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值