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)
    ]

总结:用条件判断配合默认参数实现灵活的范围筛选。

回到顶部