以下两个表达式是等效的:
(third (list 1 2 3 4))
(first (nthcdr 2 (list 1 2 3 4)))
Run Code Online (Sandbox Code Playgroud)
然而,使用"第三","第四","第五"等并不总是实用的,(first (nthcdr n list))
似乎有点冗长.有没有办法说出(item 2 (list 1 2 3 4))
如何在列表中获取第n项?
T33*_*33C 14
(nth 3 (list 1 2 3 4))
Run Code Online (Sandbox Code Playgroud)
返回第4项(基于零!)
根据HyperSpec:
Accessor NTH
描述:
第n所处的ñ个元素列表,其中汽车的的名单是"零"的元素.特别,
Run Code Online (Sandbox Code Playgroud)(nth n list) == (car (nthcdr n list))
例子:
Run Code Online (Sandbox Code Playgroud)(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)