我有一个对象数组,其中每个对象都有search_order
属性。
我要遍历数组并将所有对象的属性增加1
这是一种简单的方法:
res = []
for r in array:
r.search_order+=1
res.append(r)
return iter(res)
是否有一行for
循环可以实现此目的?
return (r.search_order+=1 for r in array)
Doest似乎不幸地工作了。
答案 0 :(得分:1)
这可能不是一行,但这可以正确地完成工作
def incr_search_order(x):
x.search_order += 1
return x
retrun map(incr_search_order, array)
<or>
return [incr_search_order(x) for x in array]
答案 1 :(得分:0)
您不能在生成器表达式或列表推导中使用赋值(它会引发SyntaxError
)。
而是将属性添加为1并重新分配结果:
old_array=(r.search_order+1 for r in array)