Lisp,为列表中的每个元素做一些事情

时间:2014-09-07 20:13:08

标签: foreach lisp

如何对列表中的每个元素执行函数?例如,说我有一个清单:

(1 x q)

我要在my-function1x上使用q。这有预定义的功能吗?与“更高”级语言中的foreach类似?或者我是否必须使用carcdr手动执行此操作?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:4)

如果您想构建my-function的新结果列表,请使用mapcar

(mapcar #'my-function my-list)

如果您不想要结果,请使用mapcdolist

另见

  1. The #' in common lisp
  2. Why #' is used before lambda in Common Lisp?

答案 1 :(得分:1)

当然有。

查看hyperspec symbol index并阅读以下内容:

  • mapmap-into
  • mapcarmapcanmapconmapcmaplmaplist
  • dolist
  • loop(loop :for element :in list #|...|#)

如果您需要将结果作为另一个相同长度的列表:mapmap-intomapcarloop。 如果您想通过副作用进行此操作:dolistloop