1

如何提取所有大于给定列表中的数字的数字并将其作为列表返回?我知道如何返回最大值,但这是不同的。一个例子是(gfifty ‘(a b (c d) 1 56 67 g))(56 67) 上面的例子中,它返回一个包含大于50的值的列表。教我高手。:)

4

1 回答 1

4

惯用的解决方案是使用filter

(filter (lambda (x) (and (number? x) (> x 50)))
        '(a b (c d) 1 56 67 g))
=> '(56 67)

要了解如何从头开始编写实现,请查看答案。但是如果搜索是递归的(如果我们还必须在子列表中搜索),那么请研究这个其他答案。

于 2013-08-07T15:30:02.687 回答