如果第一个列表中的元素位于第二个列表中,我们如何在该方案中验证该方案?(方案)验证一个列表中的元素是否在第二个列表中,并且执行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. 在列表C++中查找第一个和第二个元素
- 2. cbind列表的第二个元素列表在一起
- 3. 验证一个列表的元素是在一个字符串
- 4. 如何总结列表的第二个元素;如果在列表中的第一个元素匹配
- 5. 如果第二个元素相同,则将列表中的第一个元素合并为一个元组?
- 6. 按元素列表的第二个元素对列表进行排序
- 7. 比较两个列表,并找到第一个的所有元素是否也在第二个
- 8. Python列表从第二个元素
- 9. 列表和添加第二个元素
- 10. 执行宏第二下拉列表中,当点击第一个下拉列表
- 11. 从列表中获取第3个元素的第一个元素和第二个元素 - Haskell
- 12. PROLOG:检查第一个列表是否包含比第二个列表少3倍的元素
- 13. 比较两个列表,并返回在两个列表的第一个元素
- 14. 返回列表中每个元素的第一个元素?
- 15. 在Python中返回不在第二个列表中的列表元素的更有效的方法是什么?
- 16. 在Haskell列表中访问列表中的第n个元素
- 17. LISP - 用列表中的第一个元素划分列表
- 18. 序言:颠倒列表中的每个第二个列表元素
- 19. 比较列表的第一个元素与另一个列表
- 20. Scala - 将列表中的每个第二个元素加倍
- 21. 检查一个列表是否包含另一个列表中的元素
- 22. 从Prolog列表中的列表中删除每个列表中的第一个元素的最佳方法?
- 23. 列表形式的列表中的每个第n个元素
- 24. 判断一个元素是否在列表中的另一个元素之后
- 25. 如果我比较列表中的第一个元素和第二个元素,如何在最后一个元素上停下来? [简单方案q]
- 26. 只加总元组列表中的第二个元素
- 27. 如何查看另一个列表以查看第二个列表是否包含第一个列表中的任何元素?
- 28. 获取不在第二个列表中的元素
- 29. 在方案中获取元素列表
- 30. 在方案中添加元素列表
你真的需要提供一些更多的细节来得到答案。 – 2011-05-25 19:28:36
这是作业,是吗?如果不是,请重新加入 – 2011-05-25 21:29:59
是的,它的功课 – gn66 2011-05-26 07:54:35