如何在Python列表推导式中为列表内的对象属性赋值?
问题解决:给对象列表批量赋值price属性
你遇到的问题根源在于:Python列表推导式要求内部是表达式,而x.price = y是赋值语句,不属于表达式范畴,因此无法直接在推导式中使用。
下面是两种可行的解决方式:
普通for循环(推荐,可读性高)
这是最直接且易维护的写法:for x, y in zip(item_list, new_price): x.price = y利用
setattr的表达式特性实现(不推荐,可读性差)
如果一定要用类似推导式的写法,可以借助setattr函数(它是表达式,会返回None),通过生成器表达式触发执行:list(setattr(x, 'price', y) for x, y in zip(item_list, new_price))注意:这种写法只是满足“类似推导式”的形式,实际可读性远不如普通循环,不建议在生产代码中使用。
内容的提问来源于stack exchange,提问作者NinjaBat
相关产品推荐
相关产品推荐

