这段Python代码在做什么?

Jor*_*mer 8 python math syntax

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

x, y = x + 3 * y, 4 * x + 1 * y
Run Code Online (Sandbox Code Playgroud)

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

Amb*_*ber 16

x, y = x + 3 * y, 4 * x + 1 * y
Run Code Online (Sandbox Code Playgroud)

相当于:

x = x + 3 * y
y = 4 * x + 1 * y
Run Code Online (Sandbox Code Playgroud)

除了它在两次计算中都使用x和y的原始值 - 因为在两次计算完成之前,不会分配x和y的新值.

通用形式是:

x,y = a,b
Run Code Online (Sandbox Code Playgroud)

其中a和b是表达式,其值分别分配给x和y.您实际上可以将任何元组(逗号分隔值集)分配给任何相同大小的变量元组 - 例如,

x,y,z = a,b,c
Run Code Online (Sandbox Code Playgroud)

也会工作,但是

w,x,y,z = a,b,c
Run Code Online (Sandbox Code Playgroud)

不会因为右侧元组中的值的数量与左侧元组中的变量数量不匹配.

  • 我认为临时变量增加了清晰度.希望你不要介意 (4认同)
  • 我实际上认为用一个强调的"EXCEPT"来解释它可以让关键点变得清晰,所以我还是改变了.无论如何,谢谢你的改进尝试,我恰好对此事情有不同的看法.:) (4认同)

sth*_*sth 12

它是对元组的赋值,也称为序列解包.当你在元组周围添加括号时,可能会更清楚:

(x, y) = (x + 3 * y, 4 * x + 1 * y)
Run Code Online (Sandbox Code Playgroud)

该值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
Run Code Online (Sandbox Code Playgroud)

  • 如果对括号进行不同的分组,可能会更清楚:`x,y =(x + 3*y),(4*x + 1*y)`.那里的逗号很容易错过. (7认同)