【问题标题】:How do you get the values greater than a number from a list in scheme?您如何从方案中的列表中获取大于数字的值?
【发布时间】:2013-08-07 15:04:52
【问题描述】:

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

【问题讨论】:

  • '(a b (100 d) 1 56 67) 的输入你期望得到什么结果?

标签: list function scheme conditional-statements


【解决方案1】:

惯用的解决方案是使用filter:

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

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

【讨论】:

  • 感谢您的快捷方式。实现的链接确实帮助我理解了它是如何工作的。
  • @user2165940 如果这对您有帮助,请不要忘记accept 回答 ;)
猜你喜欢
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
相关资源
最近更新 更多