List 检查列表中是否有一定数量的元素
我的问题的意思是: 假设有一个列表(a b c d) 在继续我的代码之前,我想确认其中有4个元素 如果清单上写着(a b c) 我希望它返回零,因为这不是我想要的List 检查列表中是否有一定数量的元素,list,lisp,List,Lisp,我的问题的意思是: 假设有一个列表(a b c d) 在继续我的代码之前,我想确认其中有4个元素 如果清单上写着(a b c) 我希望它返回零,因为这不是我想要的 有人能帮忙吗?使用长度函数: (when (>= (length list) 4) ;; rest of your code ) (defun length-at-least (list n) (cond ((zerop n) t) (list (length-at-least (cdr list) (
有人能帮忙吗?使用长度函数:
(when (>= (length list) 4)
;; rest of your code
)
(defun length-at-least (list n)
(cond ((zerop n) t)
(list (length-at-least (cdr list) (1- n)))
(t nil)))
如果您需要一种方法,该方法不扫描整个列表,而只是查看是否有N个元素,则可以使用此函数:
(when (>= (length list) 4)
;; rest of your code
)
(defun length-at-least (list n)
(cond ((zerop n) t)
(list (length-at-least (cdr list) (1- n)))
(t nil)))
然后你可以做:
(when (length-at-least list 4)
;; rest of your code
)
使用长度函数:
(when (>= (length list) 4)
;; rest of your code
)
(defun length-at-least (list n)
(cond ((zerop n) t)
(list (length-at-least (cdr list) (1- n)))
(t nil)))
如果您需要一种方法,该方法不扫描整个列表,而只是查看是否有N个元素,则可以使用此函数:
(when (>= (length list) 4)
;; rest of your code
)
(defun length-at-least (list n)
(cond ((zerop n) t)
(list (length-at-least (cdr list) (1- n)))
(t nil)))
然后你可以做:
(when (length-at-least list 4)
;; rest of your code
)
(defun至少有个元素(n个列表)
(do()(
一般情况下,此解决方案会更好,它还可以同时处理循环列表和非常长的列表。(defun至少有元素(n个列表)
(do()(
一般情况下,此解决方案会更好,它还可以同时处理循环列表和非常长的列表。添加递归函数以至少处理长度,添加递归函数以至少处理长度。您还可以使用
(not(null(nthcdr(1-n)list))
,假设n
大于或等于1。编辑:@barmar最初接受的答案是比较length
的结果,因此我将在这个答案中留下我的投票。此外,Common Lisp不必进行尾部调用消除。(至少有元素4'(1 2 3 4 5.6))
返回t
,那么(至少有元素4'(1 2.3))
呢?我同意。您还可以使用(not(null(nthcdr(1-n)list))
,假设n
大于或等于1。编辑:@barmar最初接受的答案是比较length
的结果,因此我将在这个答案中留下我的投票。此外,Common Lisp不必进行尾部调用消除。(至少有元素4'(1 2 3 4 5.6))
返回t
,那么(至少有元素4'(1 2.3))
呢?