2015-06-21 86 views
1

我有一個對象數組,其中每個對象都有一個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似乎工作不幸。

回答

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] 
0

您不能在生成器表達式或列表理解中使用賦值(它會引起SyntaxError)。

而是與1添加屬性和重新分配的結果:

old_array=(r.search_order+1 for r in array)