我在想,如何检查列表中的每个元素是否是整数?我可以通过使用(integer?(car list))来检查第一个元素,但是如果我这样做(integer?(cdr list),它总是返回false(#f),因为整个列表的最后部分不是整数为一组。 在这种情况下,让我们说列表被定义为。 (定义列表“(1 2 5 4 5 3))查找列表中是否包含元素?
3
A
回答
2
(define get-integers
(lambda (x)
(if (null? x)
"All elements of list are integers"
(if (integer? (car x))
(get-integers (cdr x))
"Not all elements are an integer"))))
1
实际计划用于跨整个序列做测试提供的功能。该andmap函数的应用如果你真的需要用手写出循环,你将使用递归。
2
你需要做的是测试每个元素该列表以查看它是否满足条件(作为in泰格,在这种情况下)。当您在整数列表上评估(integer? (car list))
时,您正在检查列表中的第一个元素是否为整数,这很好。但是表达式(integer? (cdr list))
测试列表是否是一个整数(因为cdr
返回列表),并且这不起作用 - 您需要测试列表中的下一个元素,然后下一个,依此类推,直到列表是空的。
有几种方法可以做到上面的,最直接的是复发列表测试又将每一个元素,返回false
如果一个非整数元素被发现或true
如果所有的名单是没有找到一个消耗非整数元素,像这样:
(define (all-integers? lst)
(cond ((null? lst) #t)
((not (integer? (car lst))) #f)
(else (all-integers? (cdr lst)))))
更实际的方法是使用内置的程序,就像这样:
(andmap integer? lst)
andmap
将检查在的所有元素针对给定的谓词评估为true
。例如:
(andmap integer? '(1 2 3))
> #t
(andmap integer? '(1 "x" 3))
> #f
0
SRFI-1使用术语every
和any
而非andmap
和ormap
。 match
也可以使用:
(define list-of-integers?
(lambda (lst)
(match lst
(((? number?) ..1) #t)
(_ #f))))
相关问题
- 1. 检查列表是否包含至少一个非零元素
- 2. 检查两个列表是否包含相同的元素
- 3. 序言 - 如何检查列表是否包含某些元素?
- 4. 检查字符串是否包含任何列表元素
- 5. 检查,看是否列表包含相同的元素
- 6. 检查一个列表是否包含另一个列表中的元素
- 7. 检查元素是否包含#shadow-root
- 8. 检查元素是否包含内容
- 9. 检查VecDeque是否包含元素
- 10. 检查元素是否包含jQuery中的另一个元素
- 11. 查找包含unicode的列表中的元素
- 12. 查找列表中是否包含特定的numpy的阵列
- 13. 使用awk查找列是否包含“|”
- 14. 如何查找dataGrid是否包含列
- 15. 如何检查表是否包含Lua中的元素?
- 16. 如何检查列表2是否包含所有列表1元素?
- 17. lambda查看列表是否包含来自另一个列表的元素
- 18. 是否可以在下拉列表中包含HTML元素?
- 19. 如何查找对象数组是否包含元素?
- 20. 查找元素的某些属性是否包含特定值
- 21. 如何查找元素是否包含特定的类?
- 22. 查找元素是否包含“body”添加类别
- 23. 使用$ .contains查找元素是否包含另一个焦点
- 24. 递归检查列表的第一个元素以查看列表是否包含给定元素
- 25. 检查一个URL是否包含Python中列表中的所有元素
- 26. 如何查找元素是否包含使用jQuery的id ='x'的子元素?
- 27. 检查元素是否包含特定的子元素
- 28. 查找列表<元素>包含的值
- 29. 检查列表中包含了列表作为元素
- 30. Python - 检查字符串是否包含列表中的任何元素
返回字符串而不是布尔值?使用嵌套'if's而不是'cond'?这个解决方案不是很习惯。 – 2012-07-24 04:24:08
清晰度更好,因为这是展示此方法背后的逻辑。 – ewein 2018-03-08 00:36:15