我想在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