首页 > 解决方案 > 如果数字在一个范围内,如何编写一个过滤数字的函数

问题描述

我想编写一个函数inRange,它应该返回一个列表,其中包含所有且仅包含l其值介于低和高之间的元素。例如,inRange(3, 10, [2, 3, 7, 17, 10, 7, -9])返回[3, 7, 10, 7]. 我只能使用 map、filter、reduce、list、lambda 来执行此功能。

这是我当前不起作用的代码:

def inRange(lo, hi, l):
    return list(filter(lambda lo, hi, l: l in range(lo, hi))

print(inRange(10, 20, [10, 14, 16, 17, 20, 21, 23, 12]))

标签: pythonlistlambda

解决方案


您正在寻找此功能:

def inRange(lo, hi, l):
     return list(filter(lambda i: lo <= i <= hi, l))

print(inRange(10, 20, [10, 14, 16, 17, 20, 21, 23, 12]))

输出:

[10, 14, 16, 17, 20, 12]

参考:


推荐阅读