2009-09-02 8 views
8

これは、私が発見したPythonコードのスニペットで、数学的な問題を解決します。それは正確に何をしていますか?私はGoogleに何をすべきかあまりにもわかりませんでした。このPythonコードは何をしていますか?

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

これは特別なPython構文ですか? xとyの新しい値が両方まで割り当てられていないため、 - それは、両方の計算ではxとyの元の値を使用すること

除き
x = x + 3 * y 
y = 4 * x + 1 * y 

答えて

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

は同等です計算は完了です。

一般的な形式は次のとおり

x,y = a,b 

及びbはの値はそれぞれx及びyに割り当てられ得る式である場合。あなたは、実際には同じ大きさの変数の任意のタプルに任意のタプル(カンマ区切り値のセット)を割り当てることができます - 例えば、

x,y,z = a,b,c 

も動作しますが、

w,x,y,z = a,b,c 

はなりませんので、右タプルの値の数が左タプルの変数の数と一致しません。

+4

私は一時変数が明瞭さを加えると思います。あなたが気にしないことを願っています – hop

+4

私は実際に強調した「EXCEPT」でそれを説明すると、ポイントがより明確になると思うので、変更を元に戻しました。とにかく改善を試みてくれてありがとう、私はちょうどこの問題に関して別の考え方になる。 :) – Amber

+0

理にかなっています。かっこで包まれているのを見て、それは完全に明確になりました。非常に簡単にそれを読むのは簡単で、その小さな細部を見逃す。ありがとう! –

12

tupleへの割り当てで、とも呼ばれ、の順番に割り当てられています。おそらくそれはあなたがタプルの周りに括弧を追加したときに明確です:

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

x + 3 * yxに割り当てられ、値4 * x + 1 * yyに割り当てられます。

それは、これに相当します

​​
+7

'x、y =(x + 3 * y)、(4 * x + 1 * y)'のようにカッコを別々にグループ化すると、もっと明確になるでしょう。コンマはそこでは見逃しやすいでしょう。 –

+0

ああ、はい、括弧はそれをすべて明らかにしました - 目はそれを見ることができませんでした[額の額] ... –

0

私も最近、これが答えのいくつかの精神をキャプチャするようだ「同時割り当て」と呼ば見ました。