Lisp 有没有更好的方法来获取列表中的第n项?

Lisp 有没有更好的方法来获取列表中的第n项?,lisp,common-lisp,Lisp,Common Lisp,以下两个表达式是等效的: (third (list 1 2 3 4)) (first (nthcdr 2 (list 1 2 3 4))) 然而,使用“第三”、“第四”、“第五”等并不总是实用的,而且(第一(nthcdr n list))似乎有点冗长。有没有一种方法可以说(第2项(列表1、2、3、4))来获取列表中的第n项 (nth 3 (list 1 2 3 4)) 返回第四项(从零开始!) 根据: 存取器 说明: (nth 0 '(foo bar baz)) => FOO (n

以下两个表达式是等效的:

(third (list 1 2 3 4))

(first (nthcdr 2 (list 1 2 3 4)))
然而,使用“第三”、“第四”、“第五”等并不总是实用的,而且
(第一(nthcdr n list))
似乎有点冗长。有没有一种方法可以说
(第2项(列表1、2、3、4))
来获取列表中的第n项

(nth 3 (list 1 2 3 4))
返回第四项(从零开始!)

根据:

存取器 说明:

(nth 0 '(foo bar baz)) =>  FOO
(nth 1 '(foo bar baz)) =>  BAR
(nth 3 '(foo bar baz)) =>  NIL
(setq 0-to-3 (list 0 1 2 3)) =>  (0 1 2 3)
(setf (nth 2 0-to-3) "two") =>  "two"
0-to-3 =>  (0 1 "two" 3)
nth定位列表的第n个元素,其中列表的car是“第0个”元素。具体来说,

(nth n list) ==  (car (nthcdr n list))
示例:

(nth 0 '(foo bar baz)) =>  FOO
(nth 1 '(foo bar baz)) =>  BAR
(nth 3 '(foo bar baz)) =>  NIL
(setq 0-to-3 (list 0 1 2 3)) =>  (0 1 2 3)
(setf (nth 2 0-to-3) "two") =>  "two"
0-to-3 =>  (0 1 "two" 3)
用于列表

为序列工作。序列是列表和各种一维数组(向量、字符串等)

这意味着ELT是更通用的访问器,它不仅适用于列表,还适用于一维数组