如果第一個列表中的元素位於第二個列表中,我們如何在該方案中驗證該方案?(方案)驗證一個列表中的元素是否在第二個列表中,並且執行cicle
3
A
回答
5
DO循環球拍有一個有趣的結構:
(do ([id init-expr step-expr-maybe] ...)
(stop?-expr finish-expr ...)
expr ...)
的文檔R5RS提供了一個例子:
(let ((x '(1 3 5 7 9)))
(do ((x x (cdr x))
(sum 0 (+ sum (car x))))
((null? x) sum)))
這語句返回25,循環的元素的總和。 do循環中的x
初始化爲let中的x
,然後每次通過循環迭代設置爲cdr
。 sum
被初始化爲0,並且每次累積x
的car
的值。停止條件是迭代變量爲空時,返回值爲總和。好吧,除了方括號的球拍偏好外,這看起來不錯。有一個do循環和一個列表。循環在該列表上做了些什麼。我們可以用它來寫一個查找特定原子在列表的功能(使用球拍支架):
(define (find5 lst)
(do ([x lst (rest x)]
[found #f (or found (eq? 5 (first x)))])
((null? x) found)))
相反初始化和增加值sum
的,我or
到found
。另外,我更喜歡first
和rest
而不是car
和cdr
,並且在他們不存在時自己定義它們。這個函數的工作方式應該從示例的解釋開始。
(find5 '(1 2 3 4 6))
給出#f,如預期。同樣地:
(find5 '(1 2 3 4 5 6))
給#t。
您是否能夠推廣在查找列表中的某個特定元素,並將do循環放入您的特定問題?
+0
是的,謝謝你的答案。我在計劃中並不熟悉cicle,我試圖理解,但我只理解簡單的函數,但是昨天我需要做一個函數,看看元素是否在第二個列表中。我無法做到這一點,因爲在不瞭解停工條件。 – gn66 2011-05-26 08:00:04
相關問題
- 1. 按方案中對的第二個元素對排序列表
- 2. 在列表C++中查找第一個和第二個元素
- 3. cbind列表的第二個元素列表在一起
- 4. 驗證一個列表的元素是在一個字符串
- 5. 如何總結列表的第二個元素;如果在列表中的第一個元素匹配
- 6. 檢查第二個列表是否是第一個列表大小的一半
- 7. 如果第二個元素相同,則將列表中的第一個元素合併爲一個元組?
- 8. Python中,在列出的清單中第一個列表的第一個元素比較第二列表的第一個元素
- 9. 檢查列表元素是否存在於另一個列表的元素中
- 10. 按元素列表的第二個元素對列表進行排序
- 11. 比較兩個列表,並找到第一個的所有元素是否也在第二個
- 12. 列表和添加第二個元素
- 13. Python列表從第二個元素
- 14. 執行宏第二下拉列表中,當點擊第一個下拉列表
- 15. 從列表中獲取第3個元素的第一個元素和第二個元素 - Haskell
- 16. PROLOG:檢查第一個列表是否包含比第二個列表少3倍的元素
- 17. python訪問列表中的第二個元素到最後一個元素
- 18. 比較兩個列表,並返回在兩個列表的第一個元素
- 19. 從列表的子列表中提取第n個元素並將它們合併到一個新列表中?
- 20. 在Python中返回不在第二個列表中的列表元素的更有效的方法是什麼?
- 21. 返回列表中每個元素的第一個元素?
- 22. 在Haskell列表中訪問列表中的第n個元素
- 23. LISP - 用列表中的第一個元素劃分列表
- 24. 檢查一個列表是否包含另一個列表中的元素
- 25. 序言:顛倒列表中的每個第二個列表元素
- 26. 比較列表的第一個元素與另一個列表
- 27. Scala - 將列表中的每個第二個元素加倍
- 28. Haskell函數交換列表中的每個第二個元素
- 29. 從Prolog列表中的列表中刪除每個列表中的第一個元素的最佳方法?
- 30. 在列表中找到最高的第二個元素(Python)的
你真的需要提供一些更多的細節來得到答案。 – 2011-05-25 19:28:36
這是作業,是嗎?如果不是,請重新加入 – 2011-05-25 21:29:59
是的,它的功課 – gn66 2011-05-26 07:54:35