如何用Python的min函数直接获取对象列表的最小y值(无需新列表/循环)
解决方法:利用
min函数的key参数找最小y值 你执行min(dots.y)失败的原因是:dots是列表对象,本身没有y属性,你需要访问的是列表中每个Dot实例的y属性。下面是符合你要求的两种解决方案:
方案1:使用lambda表达式作为key参数
直接调用min时指定key,让它基于每个Dot对象的y属性做比较,最后取出对应对象的y值:
min_y = min(dots, key=lambda dot: dot.y).y
这个过程不会生成新的y值列表,也不需要你手动写循环(循环由min内部处理)。min函数会遍历dots中的每个元素,用lambda表达式提取每个元素的y属性作为比较依据,找到对应最小属性值的Dot对象后,再获取它的y就是你要的最小值。
方案2:使用operator.attrgetter(更简洁的属性获取方式)
如果觉得lambda不够直观,可以用operator模块的attrgetter来提取属性:
from operator import attrgetter min_y = min(dots, key=attrgetter('y')).y
attrgetter('y')会返回一个专门用来获取对象y属性的函数,作用和lambda表达式一致,但代码更简洁,适合需要获取多个属性的场景。
你可以直接打印min_y验证结果:
print(min_y) # 输出dots列表中最小的y值
内容的提问来源于stack exchange,提问作者TheGreenLightning444
相关产品推荐
相关产品推荐

