Return 项 Lisp 列表

Return items of a list in Lisp

我必须用 Lisp 编写一个程序,returns 列表的第一项如果它包含偶数个元素,最后一个如果它包含奇数个元素。我需要一些关于从哪里开始的建议?我不需要整个程序。

您可以使用 length 获得列表的长度。

(length '(a b c)) ;; 3

然后您可以根据谓词函数 evenp 检查该数字,其中 returns TNIL 取决于参数是否为偶数。

(evenp 1) ;; NIL
(evenp 2) ;; T

函数 first returns 列表的第一个元素。

(first '(a b c)) ;; A

函数 last returns 列表的最后一个缺点,因此您必须使用 FIRST.

解包值
(last '(a b c)) ;; (C)
(first (last '(a b c))) ;; C

然后您可以将它们组合成一个函数,如下所示:

(defun get-first-if-even-length (list)
  (if (evenp (length list))
      (first list)
    (first (last list))))

此函数 returns 列表中的第一个或最后一个元素,具体取决于其长度是否为偶数。