`
deepfuture
  • 浏览: 4332672 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79404
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68361
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101484
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:281140
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14597
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65552
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31311
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45199
社区版块
存档分类
最新评论

lisp-关于mapcar、apply、assoc 列表操作

 
阅读更多
0[2] (mapcar #'+ `(22 11 55) `(111 222 333))

(133 233 388)
0[2] (mapcar #'cdr `((22 11 55) (111 222 333)))

((11 55) (222 333))
0[2] (apply #'append `((22 11 55) (111 222 333)))

(22 11 55 111 222 333)
0[2]

 mapcar用于以第二个参数为运算符或函数,执行第二个参数,这个函数所需要的参数来自于mapcar的第二个参数到最后一个参数,将后面参数中列表中的每项取出,然后分别运算,形成新的列表,意味着对每个列表中的每项都会执行一次mapcar的第二个参数规定的函数。

apply则以第二个参数为函数或运算符,将后面参数中的列表中的每项取出后,仅做为参数供函数运算,不形成新的列表

0[5] (defun myadd(v1 v2) (mapcar '+ v1 v2))

STYLE-WARNING: redefining COMMON-LISP-USER::MYADD in DEFUN
MYADD
0[5] (mapcar `+ `(11 22) `(33 44))

(44 66)

 

0[5] (apply #'myadd `((11 22) (33 44)))

(44 66)
0[5]

 assoc相当于一种HASH操作,以参数为关键字,从列表中取出第一项元素,

* (defvar *mystudent* `((1 (liming 25)) (2 (wanghua 26))))

*MYSTUDENT*
* *mystudent*

((1 (LIMING 25)) (2 (WANGHUA 26)))

 

* (assoc `1 *mystudent*)

(1 (LIMING 25))
* (assoc `2 *mystudent*)

(2 (WANGHUA 26))

 注意 在LISP中最好 用TAB来分隔中文参数

* (defvar *mysts* `((男 (李明   29))(女	(王花   26)))
)

*MYSTS*
* *mysts*

((男 (李明 29)) (女 (王花 26)))
* (assoc `男	*mysts*)

(男 (李明 29))
* (assoc `女  *mysts*)

(女 (王花 26))
* (assoc `男 *mysts*)

(男 (李明 29))
* 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics