nth
函数 nthcdr
重复获取列表的 CDR。函数 nth
获取由 nthcdr
返回的结果的 CAR。它返回列表的第 N 个元素。
因此,如果不是为了速度而在C中定义,nth
的定义将是:
(defun nth (n list) "返回列表 LIST 的第 N 个元素。 N 从零开始计数。如果列表没有那么长,则返回 nil。" (car (nthcdr n list)))
(最初,nth
是在Emacs Lisp中在subr.el中定义的,但它的定义在1980年代被重写为C语言。)
nth
函数返回列表的单个元素。这可能非常方便。
请注意,元素从零开始编号,而不是从一开始。也就是说,列表的第一个元素,它的 CAR 是零号元素。这种从零开始计数通常会让习惯于列表中第一个元素为编号一的人感到困扰。
例如:
(nth 0 '("one" "two" "three")) ⇒ "one" (nth 1 '("one" "two" "three")) ⇒ "two"
值得一提的是,nth
、nthcdr
和 cdr
都不会改变原始列表—这些函数是非破坏性的。这与 setcar
和 setcdr
函数形成鲜明对比。