我正在尝试从自定义对象列表中添加字段的值,但无法reduce()
在Python中找到具有函数的解决方案:
final_time = init_time + reduce(lambda x, y: x.time_coef + y.time_coef, list_of_paths)
可迭代的是shapely.LineString
带有自定义字段(time_coef
)的自定义对象()的列表。
据我了解,reduce
可以进行第一次加法,但是第二次迭代失败,因为它试图获取.time_coef
先前加法的结果(浮点数)的属性。
有什么办法可以避免这种情况,还是应该迭代列表而不使用reduce?
此处的一般模式是使用回调将返回的类型的基值来初始化累加器,因此对reduce函数的首次调用不会隐式传递您的两个对象:
reduce(lambda a, i: a + i.time_coef, lst, 0)
# initialise your accumulator ^
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句