用for循环遍历列表(球拍)

时间:2020-04-30 20:32:56

标签: racket

我需要编写一个使用for循环遍历数字列表并返回所有小于10的数字的函数的帮助,我不知道从哪里开始,如果有人可以帮助我甚至从一个起点开始, d感激不尽。

谢谢:)

1 个答案:

答案 0 :(得分:2)

执行此操作的“标准”方法是使用filter procedure。它使用一个 predicate (指示条件是否为真的过程)和一个列表,并生成一个新列表,其中包含输入列表中满足该谓词的那些元素。例如,我们可以生成一个仅包含数字输入列表中的偶数的列表,如下所示:

(filter even? '(0 1 2 3 4 5 6))
;; => (0 2 4 6)

在您的情况下,没有用于测试数字是否小于10的“内置”谓词,但是我们可以轻松地定义一个:

(define (<10 n)
  (< n 10))

,然后使用它过滤任何列表:

(filter <10 '(1 4 15 23 25 4 8))
;; => (1 4 4 8)

不过,在这种情况下,我认为大多数人都希望改用lambda

(filter (lambda (n) (< n 10))
        '(1 4 15 23 25 4 8))
;; => (1 4 4 8)

希望这会有所帮助!