Python 一行用于对象修改的循环
我有一个对象数组,其中每个对象都有一个Python 一行用于对象修改的循环,python,python-2.7,Python,Python 2.7,我有一个对象数组,其中每个对象都有一个search\u 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) 不幸的是,它似乎不起作用。您不能在生成器表达式或列表理解中使用赋值(它将引
search\u 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)
不幸的是,它似乎不起作用。您不能在生成器表达式或列表理解中使用赋值(它将引发
语法错误
)
而是将属性添加为1并重新指定结果:
old_array=(r.search_order+1 for r in array)
这可能不是一行,但它正确地完成了工作
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]
def增量搜索顺序(x):
x、 搜索顺序+=1
返回x
重新运行映射(递增搜索顺序,数组)
返回[数组中x的递增搜索顺序(x)]