我在lisp編程中很新,所以也許這是一個愚蠢的問題,但無論如何,我有一個數字列表(6000 6100 6200 6200 7200等),我想查找和替換第二個相同的值(將1200加到第二個相同的值),所以結果應該是(6000 6100 6200 7400 7200)。你能幫助我嗎?非常感謝你。common lisp - 在列表中替換相同的值
回答
老實說,我不明白爲什麼falk會低估這個問題。雖然這不是一個有趣的問題,但它是一個明確的問題。對於那裏的學生來說,讓我把它概括一下,試圖讓它更有趣。我是新來的lisp,我需要將一個函數應用到列表中。函數的輸出不僅取決於當前元素,還取決於前一個和/或後續元素,最佳構造是什麼?
我認爲最簡單的就是使用loop
:
(defun nahrad (list change)
(loop for f = nil then s
for s in list
collect (if (eql f s) (+ change s) s)))
(defparameter *test* '(6000 6100 6200 6200 7200))
(nahrad *test* 1200)
這不會找到第二個相同的值。 *查找*通常意味着搜索操作, –
您的代碼也會執行多項更改。這個問題談到「第二個同樣的價值」,這是單數。它並沒有說'every'。 –
你的。代碼也可能會取代第三個相同的值。 –
- 1. 替換Common Lisp中
- 2. 轉換字符串列表Common Lisp中
- 3. 子列表Common Lisp中
- 4. Common Lisp的 - 在列表列出
- 5. 在Common Lisp中合併列表項(Clisp)
- 6. 在Common Lisp中轉置列表
- 7. 相互遞歸Common Lisp中
- 8. 傳遞函數列表中的Common Lisp
- 9. Common Lisp中的圓形列表
- 10. Common Lisp替代使用類
- 11. 在Common Lisp中的字符串切換
- 12. Common Lisp a Lisp-n?
- 13. Step Eval Common Lisp
- 14. Common Lisp中,列表處理(追加等)
- 15. Common Lisp從列表中創建矩陣
- 16. 替換正則表達式,就地,與Common Lisp的
- 17. common lisp和emacs
- 18. 調用的函數Common Lisp的列表
- 19. Common Lisp中
- 20. 與Common Lisp中
- 21. 的#ifndef Common Lisp中
- 22. 使用的Common Lisp
- 23. Common Lisp Binary Tree
- 24. 如何在Common Lisp中打印列表爲矩陣列表
- 25. Common Lisp弱引用?
- 26. Common Lisp SublimeREPL
- 27. Common Lisp Loop Trouble
- 28. (撰寫)在Common Lisp
- 29. 「unfold」for common lisp?
- 30. Common Lisp:列表和數組之間的轉換
那你試試這麼遠嗎? –
- 試圖用一個原始列表和一個移動列表構造一個循環,而不是一些使用lambda獲得t/nil模式的mapcar,但是 - 沒有達到工作結果。 – user7980164
向我們顯示您的代碼,並從那裏我們可能能夠指出你在正確的方向 – sorifiend