You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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条有效记录:

  1. id=2、method=B、speedFrom=20、speedTo=30、valid=true
  2. id=1、method=A、speedFrom=30、speedTo=40、valid=true
  3. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 12:54:08