LISP - 向量(Vectors)

LISP - 向量(Vectors) 首页 / LISP入门教程 / LISP - 向量(Vectors)

向量是一维数组,因此是数组的子类型,向量和列表统称为序列。

创建向量

向量函数可让您制作具有特定值的固定大小的向量,它接受任意数量的参数,并返回包含这些参数的向量。

向量 - 示例1

创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。

(setf v1 (vector 1 2 3 4 5))
(setf v2 #(a b c d e))
(setf v3 (vector 'p 'q 'r 's 't))

(write v1)
(terpri)
(write v2)
(terpri)
(write v3)

当您执行代码时,它返回以下输出-

#(1 2 3 4 5)
#(A B C D E)
#(P Q R S T)

请注意,LISP使用#(...)语法作为向量的文字表示法,您可以使用此#(...)语法在代码中创建并包括文字向量。

make-array 函数是创建向量的更通用的方法,您可以使用 aref 函数访问矢量元素。

向量 - 示例2

创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。

(setq a (make-array 5 :initial-element 0))
(setq b (make-array 5 :initial-element 2))

(dotimes (i 5)
   (setf (aref a i) i))
   
(write a)
(terpri)
(write b)
(terpri)

当您执行代码时,它返回以下输出-

#(0 1 2 3 4)
#(2 2 2 2 2)

fill-pointer

make-array        -  函数使您可以创建可调整大小的向量。

fill-pointer         -  函数参数跟踪向量中实际存储的元素数。

vector-push       -  函数允许您在可调整大小的向量的末尾添加一个元素。它将填充指针增加1。

vector-pop         -  函数返回最近推送的项目,并将填充指针减1。

fill-pointer - 示例

创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。

(setq a (make-array 5 :fill-pointer 0))
(write a)

(vector-push 'a a)
(vector-push 'b a)
(vector-push 'c a)

(terpri)
(write a)
(terpri)

(vector-push 'd a)
(vector-push 'e a)

;this will not be entered as the vector limit is 5
(vector-push 'f a)

(write a)
(terpri)

(vector-pop a)
(vector-pop a)
(vector-pop a)

(write a)

当您执行代码时,它返回以下输出-

#()
#(A B C)
#(A B C D E)
#(A B)

向量是序列,所有序列函数都适用于向量。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

技术管理实战36讲 -〔刘建国〕

Web协议详解与抓包实战 -〔陶辉〕

编辑训练营 -〔总编室〕

雷蓓蓓的项目管理实战课 -〔雷蓓蓓〕

MySQL 必知必会 -〔朱晓峰〕

自动化测试高手课 -〔柳胜〕

运维监控系统实战笔记 -〔秦晓辉〕

深入拆解消息队列47讲 -〔许文强〕

结构思考力 · 透过结构看思考 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)