在Python中使用+ =运算符时可以执行
>>>a=42
>>>a+=1
>>>a
43
现在让我们说我有
>>>a=1
>>>b=1
>>>c=1
并且想做
>>>a, b, c += 1, 2, 3
是
的简写>>>a+=1
>>>b+=2
>>>c+=3
现在我的代码看起来像
rt, gt, bt = 0,0,0
for yi in range(self.ysize):
for xi in range(self.xsize):
ri, gi, bi, = self.pix[xi, yi][:3]
rt += ri
gt += gi
bt += bi
num_pixels = self.xsize*self.ysize
r = rt/num_pixels
g = gt/num_pixels
b = bt/num_pixels
return int(r), int(g), int(b)
我希望能够将这三个值设置在一行中,以便代码更清晰。
有没有办法使用+ =呢?
有没有办法做到这一点简洁明了(没有定义一个函数来为我做)
有没有更好的方法来循环二维数组并平均元组?
答案 0 :(得分:3)
您可以使用numpy
来解决此问题:
x = np.arange(5)
x += np.arange(5)
print x
array([0, 2, 4, 6, 8])
包装/拆包步骤:
vals = np.array([a, b, c])
vals += 1, 2, 3
# now you can use vals[0] for a, vals[1] for b and vals[2] for c
# but if you want to keep using a,b,c variable names:
a,b,c = vals
答案 1 :(得分:2)
简短的回答是否定的。 扩充赋值不能与元组解包一起使用