我想在lisp中编写一个函数,使用映射函数反转列表中的所有元素,但我不知道如何启动这个..我想我必须使用built in如果我有清单(1 2 3(4 5 6(7 8 9))),我会得到(((8 8 7)6 5 4)3 2 1) 或如果我有名单(1 2 3(4 5)(6 7))我会得到((7 6)(5 4)3 2 1).. 任何帮助表示赞赏!Lisp反向“全部”功能
2
A
回答
4
只是一个快速的答案,不知道效率/优美:
(defun reverse-deeply (list)
(mapcar #'(lambda (li)
(cond
((consp li) (reverse-deeply li))
(t li)))
(reverse list)))
0
这是一个适用于Common-Lisp的版本。
(defun reverse-list (list)
(if (atom list)
list ;; Not actually a list, return the atom
(reverse (mapcar #'reverse-list list)))
;; Testing it out
(reverse-list '((1 2 3) (4 5 (3 6))))
输出:
(((6 3) 5 4) (3 2 1))
Mapcar是另需函数作为第一个参数和一个列表作为其第二个参数的函数。然后它在列表的每个元素上调用该函数。它返回所有答案的列表。因此,在我使用'mapcar'反转所有子列表之后,我再次调用'reverse'来反转更大的列表。
它在每个子列表上调用的函数是'反向列表'。这将检查列表是否是一个原子。如果是,那么它会自行返回。如果它是一个列表,那么它会再次在列表中的每个元素上调用mapcar,然后反转结果。
0
(defun reverse-list (list)
(let ((result nil))
(dolist (e list result)
(push e result))))
相关问题
- 1. 平等和反向功能Lisp的
- 2. 反向功能
- 3. 反向功能
- 4. 反向LISP列表
- 5. 反向(kbd)功能?
- 6. 反向onclick功能
- 7. LISP CDR功能
- 8. SQL“全部”功能?
- 9. VB.NET VScrollBar,反向功能
- 10. 反向阵列功能
- 11. pyPandas功能请求:反向/负向df.drop
- 12. DocumentDB“全部/任何”功能
- 13. 功能全部打印
- 14. lisp中的搜索功能
- 15. LISP通用列表功能
- 16. Lisp的排序功能键
- 17. Lisp语言的功能
- 18. LISP做功能行为?
- 19. 反向列表与dolist在LISP
- 20. Common Lisp中的反向字符串
- 21. 没有反向功能的反向字符串
- 22. 是否有反向映射功能?
- 23. Django的HttpResponseRedirect在教程反向功能
- 24. Haskell功能反向函数调用
- 25. 语法JavaScript的反向功能
- 26. 反向工程哈希/加密功能
- 27. 反向阵列码功能错误
- 28. 获取反向功能中的R
- 29. 反向累计和的功能方法?
- 30. 没有阵列功能反向串
从下面您的意见,似乎你所描述的递归问题,其中最简单的解决方案是一个递归函数(即自己调用的函数)。出于这个原因,我用“递归”标记了这个问题。 – 2010-12-07 07:43:16