The following two expressions are equivalent:
(third (list 1 2 3 4))
(first (nthcdr 2 (list 1 2 3 4)))
However, using "third," "fourth," "fifth," etc. isn't always practical and (first (nthcdr n list))
seems a little verbose. Is there a way to say something like (item 2 (list 1 2 3 4))
to get the nth item in a list?
(nth 3 (list 1 2 3 4))
returns 4th item (zero based!)
According to the HyperSpec:
Accessor NTH
Description:
nth locates the nth element of list, where the car of the list is the “zeroth” element. Specifically,
(nth n list) == (car (nthcdr n list))
Examples:
(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 works for lists.
ELT works for sequences. Sequences are lists and all kinds of one-dimensional arrays (vector, string, ...).
This means that ELT is the more general accessor, which not only works with lists, but also with one-dimensional arrays.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With