如何在LISP中检查列表中哪些元素可以被5整除?

如何在LISP中检查列表中哪些元素可以被5整除?,lisp,common-lisp,Lisp,Common Lisp,我的程序中有两个函数。被注释掉的一个将列表中的每个元素修改五次。第二个函数计算元素在列表中出现的次数。我如何将这两种方法结合起来,以得到我想要的结果,即确定列表中有多少个元素可以被五整除 这是我的密码: (第五节第二节) (lst采集(mod x 5)中x的循环) (除雾计数器(lst) (条件((空lst)0) ((等于a(车辆lst))(+1(计数器a(cdr lst))) (t(计数器a(cdr lst(()()))) (计数器“0”(0 0 0 0 0 0 0 5 31)) 如果您只需要

我的程序中有两个函数。被注释掉的一个将列表中的每个元素修改五次。第二个函数计算元素在列表中出现的次数。我如何将这两种方法结合起来,以得到我想要的结果,即确定列表中有多少个元素可以被五整除

这是我的密码:

(第五节第二节)
(lst采集(mod x 5)中x的循环)
(除雾计数器(lst)
(条件((空lst)0)
((等于a(车辆lst))(+1(计数器a(cdr lst)))
(t(计数器a(cdr lst(()())))
(计数器“0”(0 0 0 0 0 0 0 5 31))

如果您只需要选择列表中的所有元素,这些元素可以被五除,您可以使用
删除,如果不是

(defun dividable-by-5 (num)
  (zerop (mod num 5))

CL-USER> (remove-if-not #'dividable-by-5 '(1 2 3 10 15 30 31 40)) 
(10 15 30 40)
但我不确定,您是要选择这些元素,还是只计算它们?当然,您可以通过调用结果列表中的
length
来计算它们,或者您不需要所有元素,只需要一个数字,就可以使用


若您只需要选择列表中的所有元素,这些元素可以被五除,那个么您可以使用
remove If not

(defun dividable-by-5 (num)
  (zerop (mod num 5))

CL-USER> (remove-if-not #'dividable-by-5 '(1 2 3 10 15 30 31 40)) 
(10 15 30 40)
但我不确定,您是要选择这些元素,还是只计算它们?当然,您可以通过调用结果列表中的
length
来计算它们,或者您不需要所有元素,只需要一个数字,就可以使用


如果您有两个函数,其中一个函数的结果是您希望作为第二个函数的输入,那么您可以将它们组合为如下所示:

(第二个乐趣(第一个乐趣第一个乐趣参数…)
因此,具体使用您提供的功能,它应该可以:

(计数器0(除以五(12345678910));=>2.
如果您想将其抽象为函数:

(定义计数可分为五(lst)
(计数器0(除以五个lst)))

如果您有两个函数,其中一个函数的结果是第二个函数的输入结果,则可以将它们组合为如下所示:

(第二个乐趣(第一个乐趣第一个乐趣参数…)
因此,具体使用您提供的功能,它应该可以:

(计数器0(除以五(12345678910));=>2.
如果您想将其抽象为函数:

(定义计数可分为五(lst)
(计数器0(除以五个lst)))

是否为谓词函数的计数?很抱歉,我是LISP新手,对我来说这一切似乎都很混乱。
zerop
在这种情况下做了什么?@ArtforLife将等式检查为零。如果是谓词函数,count是吗?很抱歉,我是LISP新手,对我来说这一切似乎都很混乱。
zerop
在这种情况下做了什么?@ArtforLife将等式检查为零。