使用加等于修改多个变量?

时间:2017-12-20 02:20:19

标签: python

在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)

我希望能够将这三个值设置在一行中,以便代码更清晰。

有没有办法使用+ =呢?

有没有办法做到这一点简洁明了(没有定义一个函数来为我做)

有没有更好的方法来循环二维数组并平均元组?

2 个答案:

答案 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)

简短的回答是否定的。  扩充赋值不能与元组解包一起使用