【发布时间】:2020-05-27 17:59:05
【问题描述】:
我的目标是创建一个函数来检查一个数字是否在给定的范围内。
所以,我创建了一个函数 range_check(),它接受三个参数 - 数字、低和高。我还创建了 4 个存储为元组的测试用例。前三个测试用例为真,最后一个为假。
def range_check(num, low, high):
return low <= num <= high
test_values = [(2, 1, 4), (5, 2, 7), (3, 1, 10), (3, 4, 5)]
for test_case in test_values:
print(range_check(test_case[0], test_case[1], test_case[2]))
由于我最近发现了 lambda 是什么以及如何使用它(我对 Python 和一般编程仍然很陌生),我想尝试使用 lambda 和 map 来解决这个问题(或者过滤器也可以在这里使用,我猜)
test_values = [(2, 1, 4), (5, 2, 7), (3, 1, 10), (3, 4, 5)]
print(list(map(lambda num, low, high: low <= num <= high, test_values)))
但是,这会产生错误 - lambda 缺少 2 个必需的参数 - 低和高。
有什么方法可以将参数元组插入到这样的函数或 lambda 中?
我想出的唯一办法就是列出数字、低点和高点。
nums = [2, 5, 3, 3]
lows = [1, 2, 1, 4]
highs = [4, 7, 10, 5]
print(list(map(lambda num, low, high: low <= num <= high, nums, lows, highs)))
但在我看来,这似乎并不容易,以后可能很难理解。
非常感谢您提供任何帮助或想法。
【问题讨论】: