【发布时间】:2009-09-02 23:03:11
【问题描述】:
以下是我发现的解决数学问题的 Python 代码的 sn-p。它到底在做什么?我不太确定要 Google 做什么。
x, y = x + 3 * y, 4 * x + 1 * y
这是一种特殊的 Python 语法吗?
【问题讨论】:
以下是我发现的解决数学问题的 Python 代码的 sn-p。它到底在做什么?我不太确定要 Google 做什么。
x, y = x + 3 * y, 4 * x + 1 * y
这是一种特殊的 Python 语法吗?
【问题讨论】:
x, y = x + 3 * y, 4 * x + 1 * y
相当于:
x = x + 3 * y
y = 4 * x + 1 * y
除了它在两个计算中都使用 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
不会因为右侧元组中的值数量与左侧元组中的变量数量不匹配。
【讨论】:
这是对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
【讨论】:
x, y = (x + 3 * y), (4 * x + 1 * y)。逗号在那里很容易被忽略。
我最近也看到这被称为“同时分配”,这似乎抓住了几个答案的精神。
【讨论】: