Common Lisp专题4:数组

1)用make-array创建数组:

CL-USER> (make-array 5 :initial-element nil)
#(NIL NIL NIL NIL NIL)
CL-USER> (make-array 5 :initial-contents '(a e i o u))
#(A E I O U)
CL-USER> (setf arr (make-array 5 :initial-contents '(a e i o u)))
#(A E I O U)
CL-USER> arr
#(A E I O U)


也可以简单一点:

CL-USER> (setf a '#(nil nil nil nil nil))
#(NIL NIL NIL NIL NIL)

2)创建二维数组:

CL-USER> (setf arr (make-array '(2 3) :initial-element nil))
#2A((NIL NIL NIL) (NIL NIL NIL))
CL-USER> (make-array (list 2 2))
#2A((0 0) (0 0))
CL-USER> (make-array (list 2 2) :initial-contents '((1 2) (3 4)))
#2A((1 2) (3 4))
CL-USER> (make-array '(2 2) :initial-contents '((a b) (c d)))
#2A((A B) (C D))
CL-USER> (setf arr (make-array '(2 3) :initial-element nil))
#2A((NIL NIL NIL) (NIL NIL NIL))
CL-USER> arr
#2A((NIL NIL NIL) (NIL NIL NIL))

3)用aref访问数组元素

CL-USER> (setf arr (make-array '(2 3) :initial-element nil))
#2A((NIL NIL NIL) (NIL NIL NIL))
CL-USER> arr
#2A((NIL NIL NIL) (NIL NIL NIL))
CL-USER> (make-array 5 :initial-element nil)
#(NIL NIL NIL NIL NIL)
CL-USER> (setf arr (make-array 5 :initial-element nil))
#(NIL NIL NIL NIL NIL)
CL-USER> (aref arr 0)
NIL
CL-USER> (aref arr 3)
NIL
CL-USER> (setf arr (make-array 5 :initial-contents '(a e i o u)))
#(A E I O U)
CL-USER> arr
#(A E I O U)
CL-USER> (aref arr 0)
A
CL-USER> (aref arr 3)
O
CL-USER> (setf arr (make-array '(2 2) :initial-contents '((a b) (c d))))
#2A((A B) (C D))
CL-USER> arr
#2A((A B) (C D))
CL-USER> (aref arr 0 1)
B
CL-USER> (aref arr 1 0)
C
CL-USER> (aref arr 1 1)
D


4)访问二维数组

CL-USER> (setf arr (make-array '(2 2) :initial-contents '((a b) (c d))))
#2A((A B) (C D))
CL-USER> arr
#2A((A B) (C D))
CL-USER> (aref arr 0 0)
A
CL-USER> (aref arr 1 0)
C


5)一维数组也是向量

CL-USER> (vector "a" 'b 5)
#("a" B 5)
CL-USER> (setf arr (vector "a" 'b 5))
#("a" B 5)
CL-USER> arr
#("a" B 5)


(未完待续。。。)

转载于:https://my.oschina.net/u/241930/blog/596594

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值