以下是我发现的解码数学问题的Python代码片段。到底是做什么的?我不太确定Google的用途。
x, y = x + 3 * y, 4 * x + 1 * y
这是一种特殊的Python语法吗?
答案 0 :(得分:16)
x, y = x + 3 * y, 4 * x + 1 * y
相当于:
x = x + 3 * y
y = 4 * x + 1 * y
EXCEPT 它在两次计算中都使用了x和y的原始值 - 因为在两次计算完成之前,x和y的新值都没有分配。
通用表格是:
x,y = a,b
其中a和b是表达式,其值分别分配给x和y。实际上,您可以将任何元组(逗号分隔值集)分配给任何相同大小的变量元组 - 例如,
x,y,z = a,b,c
也可以,但
w,x,y,z = a,b,c
不会,因为右侧元组中的值的数量与左侧元组中的变量数量不匹配。
答案 1 :(得分:12)
这是对tuple的赋值,也称为序列解包。当你在元组周围添加括号时,可能会更清楚:
(x, y) = (x + 3 * y, 4 * x + 1 * y)
将值x + 3 * y
分配给x
,将值4 * x + 1 * y
分配给y
。
相当于:
x_new = x + 3 * y
y_new = 4 * x + 1 * y
x = x_new
y = y_new
答案 2 :(得分:0)
我最近也看到这被称为“同时分配”,这似乎捕捉了几个答案的精神。