Python中如何从Speed对象列表获取有效项的speedFrom最小值与speedTo最大值
实现代码(适配Python初学者)
整个逻辑不需要引入第三方依赖,拆成两个简单步骤即可完成需求:
- 先对
speed_list做过滤,只保留valid属性为True的实例 - 在过滤后的有效集合上,直接调用Python内置的
min/max函数计算目标字段的极值
完整可运行代码如下:
# 筛选有效实例 valid_records = [record for record in speed_list if record.valid] # 计算目标字段极值 min_val = min(record.speedFrom for record in valid_records) max_val = max(record.speedTo for record in valid_records) print(f"min = {min_val} 且 max = {max_val}")
针对你提供的样例数据,过滤后共得到3条有效记录:
- id=2、method=B、speedFrom=20、speedTo=30、valid=true
- id=1、method=A、speedFrom=30、speedTo=40、valid=true
- id=1、method=A、speedFrom=40、speedTo=50、valid=true
运行代码后的输出和你预期的min = 20 且 max = 50完全一致。
初学者容易踩的坑
- 类属性定义逻辑错误:你当前写的
Speed类直接把属性定义在类层级,属于类属性,所有实例会共享同一份属性值,修改一个实例的属性会同步影响其他实例,存在严重的业务逻辑bug。建议改成在__init__方法中定义实例属性,正确的类写法参考:class Speed: def __init__(self, id, method, speedFrom, speedTo, valid): self.id = id self.method = method self.speedFrom = speedFrom self.speedTo = speedTo self.valid = valid - 属性大小写不匹配:你的样例数据里写的是
SpeedTo(首字母大写),但类定义的属性是speedTo(首字母小写),运行时会直接触发AttributeError,解析数据时要统一属性名的大小写格式,和类定义保持一致。 - 空集合极值计算报错:如果过滤后没有任何有效记录,直接调用
min/max会抛出ValueError,可以加一层简单的判断做容错:if not valid_records: min_val, max_val = None, None else: min_val = min(record.speedFrom for record in valid_records) max_val = max(record.speedTo for record in valid_records)
内容的提问来源于stack exchange,提问作者Danushka
相关产品推荐
相关产品推荐

