Python中如何定义根据上限和下限筛选数据的函数
想定义一个函数:
输入上限和下限 的值,能筛选出数据中的值。
# a 下限,b 上限
data=[5,6,7,8,9]
def factor_value(a,b):
for a,b in data:
if a < data
elif b > data
return a+b
factor_value(4,10)
我的思路是 a、b 值遍历 data 后判断大小。
返回的是 if a < data 语法错误。
本人初学,思路和语法基础都不够。有大神能写一个吗?
Python中如何定义根据上限和下限筛选数据的函数
1 回复
def filter_by_range(data, lower_bound=None, upper_bound=None):
"""
根据上下限筛选数据
参数:
data: 可迭代对象(列表、元组等)
lower_bound: 下限值(包含)
upper_bound: 上限值(包含)
返回:
筛选后的列表
"""
if lower_bound is None and upper_bound is None:
return list(data)
filtered = []
for item in data:
# 检查下限条件
lower_ok = (lower_bound is None) or (item >= lower_bound)
# 检查上限条件
upper_ok = (upper_bound is None) or (item <= upper_bound)
if lower_ok and upper_ok:
filtered.append(item)
return filtered
# 示例用法
numbers = [1, 5, 10, 15, 20, 25, 30]
# 只设置下限
print(filter_by_range(numbers, lower_bound=10))
# 输出: [10, 15, 20, 25, 30]
# 只设置上限
print(filter_by_range(numbers, upper_bound=20))
# 输出: [1, 5, 10, 15, 20]
# 同时设置上下限
print(filter_by_range(numbers, lower_bound=10, upper_bound=25))
# 输出: [10, 15, 20, 25]
# 都不设置(返回全部)
print(filter_by_range(numbers))
# 输出: [1, 5, 10, 15, 20, 25, 30]
# 处理其他类型数据
temperatures = [18.5, 22.0, 25.3, 19.8, 30.1, 15.6]
print(filter_by_range(temperatures, lower_bound=20.0, upper_bound=28.0))
# 输出: [22.0, 25.3]
这个函数的核心逻辑是:遍历数据,对每个元素检查是否同时满足下限(大于等于)和上限(小于等于)条件,默认参数设为None表示不限制。函数返回筛选后的新列表,不修改原数据。
用列表推导式更简洁的版本:
def filter_by_range(data, lower_bound=None, upper_bound=None):
return [
item for item in data
if (lower_bound is None or item >= lower_bound) and
(upper_bound is None or item <= upper_bound)
]
总结:用条件判断配合默认参数实现灵活的范围筛选。

