这段Python代码在做什么?

时间:2009-09-02 23:03:11

标签: python math syntax

以下是我发现的解码数学问题的Python代码片段。到底是做什么的?我不太确定Google的用途。

x, y = x + 3 * y, 4 * x + 1 * y

这是一种特殊的Python语法吗?

3 个答案:

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

我最近也看到这被称为“同时分配”,这似乎捕捉了几个答案的精神。