在传统的LISP中,列表是最重要也是最主要的复合数据结构,当今的Common LISP提供其他数据结构,如向量,哈希表,类或结构。
列表是单个链接列表,在LISP中,列表被构造为链接在一起的名为 cons 的简单记录结构的链。
创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。
(write (cons 1 2)) (terpri) (write (cons 'a 'b)) (terpri) (write (cons 1 nil)) (terpri) (write (cons 1 (cons 2 nil))) (terpri) (write (cons 1 (cons 2 (cons 3 nil)))) (terpri) (write (cons 'a (cons 'b (cons 'c nil)))) (terpri) (write ( car (cons 'a (cons 'b (cons 'c nil))))) (terpri) (write ( cdr (cons 'a (cons 'b (cons 'c nil)))))
当您执行代码时,它返回以下输出-
(1 . 2) (A . B) (1) (1 2) (1 2 3) (A B C) A (B C)
上面的示例显示了如何使用cons结构创建单个链接列表,如,列表(A B C)由通过其 cdrs 链接在一起的三个cons单元组成。
尽管cons单元格可用于创建列表,但是,从嵌套的 cons 函数调用中构造列表并不是最佳解决方案, list 函数用于在LISP中创建列表。
first 和 rest 函数给出列表的第一个元素和其余部分。
创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。
(write (list 1 2)) (terpri) (write (list 'a 'b)) (terpri) (write (list 1 nil)) (terpri) (write (list 1 2 3)) (terpri) (write (list 'a 'b 'c)) (terpri) (write (list 3 4 'a (car '(b . c)) (* 4 -2))) (terpri) (write (list (list 'a 'b) (list 'c 'd 'e)))
当您执行代码时,它返回以下输出-
(1 2) (A B) (1 NIL) (1 2 3) (A B C) (3 4 A B -8) ((A B) (C D E))
创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。
(defun my-library (title author rating availability) (list :title title :author author :rating rating :availabilty availability) ) (write (getf (my-library "Hunger Game" "Collins" 9 t) :title))
当您执行代码时,它返回以下输出-
"Hunger Game"
Sr.No. | 函数 & 描述 |
---|---|
1 | car 返回其第一个元素。 |
2 | cdr 返回不包含第一个元素的列表 |
3 | cons 它接受两个参数,一个元素和一个列表,并返回一个列表,其中元素插入在最前面。 |
4 | list 它接受任意数量的参数,并返回一个列表,其中参数作为列表的成员元素。 |
5 | append 它将两个或多个列表合并为一个。 |
6 | last 它获取一个列表并返回包含最后一个元素的列表。 |
7 | member 从第一个自变量开始返回列表的其余部分。 |
8 | reverse 以相反的顺序返回一个列表,其中的顶部元素。 链接:https://www.learnfk.comhttps://www.learnfk.com/lisp/lisp-lists.html 来源:LearnFk无涯教程网 |
创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。
(write (car '(a b c d e f))) (terpri) (write (cdr '(a b c d e f))) (terpri) (write (cons 'a '(b c))) (terpri) (write (list 'a '(b c) '(e f))) (terpri) (write (append '(b c) '(e f) '(p q) '() '(g))) (terpri) (write (last '(a b c d (e f)))) (terpri) (write (reverse '(a b c d (e f))))
当您执行代码时,它返回以下输出-
A (B C D E F) (A B C) (A (B C) (E F)) (B C E F P Q G) ((E F)) ((E F) D C B A)
创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。
(write (cadadr '(a (c d) (e f g)))) (terpri) (write (caar (list (list 'a 'b) 'c))) (terpri) (write (cadr (list (list 1 2) (list 3 4)))) (terpri)
当您执行代码时,它返回以下输出-
D A (3 4)
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)