我該如何編寫一個函數來獲取列表的最後一個元素?如何在方案中定義最後一個?
回答
找到最後一個列表:
(define (last l)
(cond ((null? (cdr l)) (car l))
(else (last (cdr l)))))
使用地圖,最後映射到一個列表:
(map last '((a b) (c d) (e f)))
==> (b d f)
這樣一個新功能:
(define (last-list l)
(map last l)
)
(last-list '((a b) (c d) (e f)))
==> (b d f)
這將返回每個子列表的最後一個元素...不是他所要求的,盡我所知。是? – 2010-02-17 06:11:43
這是他問史蒂文,仔細看看原來的問題(而不是代碼)。 – McPherrinM 2010-02-17 06:14:23
你的代碼」已經寫了 - 採取列表的最後一個元素 - 是正確返回列表的最後一個元素。你有一個列表清單。有一個外部列表
(x y z)
其中
x = (a b)
y = (c d)
z = (e f)
所以你得到的名單中,Z,這是(EF)
你希望你的最後一個函數的最後一個元素做不同的事情?如果您希望它返回最後一個嵌套列表的最後一個元素,則需要更改基本大小寫。現在你回車了。相反,你想檢查汽車是否是一個列表,然後調用你的嵌套最後的功能。
有意義嗎?
你的最後一個功能是好的,但你要想想你想現在用它做什麼。
你有一個列表的列表,並且你想利用最後所有這些的。
所以遞歸下你每次應用它列表:
(define (answer lst)
(cond ((null? (cdr l)) null)
(else (cons (last (car l)) (answer (cdr lst))))
另一種可能性:
(define (last thelist)
(if
(null? (cdr thelist)) (car thelist)
(last (cdr thelist))))
(define (all-last lists) (map last lists))
編輯:剛纔看到你不知道map
,並想辦法解決,沒有它:
(define (all-last lists)
(if
(null? lists) `()
(cons (last (car lists)) (all-last (cdr lists)))))
至於獲得一個空列表,我猜你試圖使用這種地圖狀前端與你原來的last
定義,而它打算與last
定義我上面給了工作。請嘗試以下定義:
(define (last thelist) (if
(null? (cdr thelist)) (car thelist)
(last (cdr thelist))))
(define (all-last lists) (if
(null? lists) `()
(cons (last (car lists)) (all-last (cdr lists)))))
和運行快速測試:
(全最後`((AB)(CD)(EF)))
的宜結果是:
(BDF)
未必是最有效的,但肯定是最簡單的一個:
(define (last lst)
(car (reverse lst)))
例子:
(last '(1 2 3 4)) => 4
(last '((a b) (b c) (d e))) => (d e)
(define last
(lambda (ls)
(list-ref ls (- (length ls) 1))))
我喜歡短的,甜甜的,速度快,尾遞歸過程。
命名let是我的朋友。
這解決了原來的問題,並返回#f,如果列表沒有最後一個元素。
(定義(最後L)(讓F((最後#F)(LL))(如果(空?L)去年(F(車L)(CDR L)))))
的
(define (last lst)
(cond [(empty? lst) empty]
[(empty? (rest lst)) (first lst)]
[else (last (rest lst))]))
- 1. 如何在PLT方案中定義一個常數?
- 2. 定義在方案
- 3. 在方案代碼中顯示最後一個參數
- 4. 定義一個方案程序
- 5. 定義一個方案功能檢查
- 6. 如何爲自定義URL方案創建一個鉤子?
- 7. UITextView - 如何定義一個詞是一行中的最後一個詞
- 8. 在方案中定義一個字段的結構體
- 9. 如何在Rails的「def create」後手動定義一個方法
- 10. 如何使用方案去除列表中的最後一個元素
- 11. 在Perl中,如何找到數組中最後一個定義的元素?
- 12. 如何啓動自定義URL方案
- 13. 如何調用一個方法定義的另一個定義
- 14. 如何定位最後一個類型
- 15. 如何定位最後一個子女
- 16. NameError:name'self'沒有在最後一個塊中定義?
- 17. 如何定義一個PHP對象作爲數組中的最後一項?
- 18. 如何在MIT方案中獲得我的函數定義?
- 19. 如何在方案中定義字符串右鍵?
- 20. 如何在CLPFD中爲以下方案定義變量?
- 21. 找到圖案後找回最後一個和下一個圖案
- 22. 如何自定義GWT中CellTable的最後一行?
- 23. 如何在最後一個固定標籤後移動標籤?
- 24. 如何聲明一個方法,然後再定義它?
- 25. 如何在Haskell中定義一個後綴運算符?
- 26. 如何在類中聲明一個類並稍後定義它?
- 27. 在QML中獲取自定義iOS方案的源URL的最佳方式
- 28. 如何在android中爲Facebook自定義選項卡配置兩個方案?
- 29. 如何在Excel中使用VBA確定最後一列(最後一列的值)?
- 30. ASP.NET自定義HTTPModule - 如何判斷在Write方法中寫入最後一個HTML塊的時間?
'(汽車(最後對LST))':得到你想要的東西最好的方法? – 2013-02-24 19:59:47