LISP - 向量(Vectors)

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

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

创建向量

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

向量 - 示例1

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

链接:https://www.learnfk.comhttps://www.learnfk.com/lisp/lisp-vectors.html

来源:LearnFk无涯教程网

(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的新源代码文件,然后在其中键入以下代码。

链接:https://www.learnfk.comhttps://www.learnfk.com/lisp/lisp-vectors.html

来源:LearnFk无涯教程网

(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的新源代码文件,然后在其中键入以下代码。

链接:https://www.learnfk.comhttps://www.learnfk.com/lisp/lisp-vectors.html

来源:LearnFk无涯教程网

(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)

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

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

技术教程推荐

后端技术面试 38 讲 -〔李智慧〕

现代C++编程实战 -〔吴咏炜〕

小马哥讲Spring AOP编程思想 -〔小马哥〕

说透数字化转型 -〔付晓岩〕

说透芯片 -〔邵巍〕

Spring Cloud 微服务项目实战 -〔姚秋辰(姚半仙)〕

去无方向的信 -〔小麥〕

JavaScript进阶实战课 -〔石川〕

高并发系统实战课 -〔徐长龙〕

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