我是Udacity的計算機科學入門課程的新手。關於交換價值的問題我們有一個相當簡單的問題,我不太明白。下面是問題:交換價值
以下哪個語句序列使變量X的值與語句之前的值相同?假設a和x都指代這個代碼之前的整數值。
爲什麼這是真的?
a,x = x,a
a,x = x,a
例如,如果我有:
a,x = 4,5
然後 一個= 4且x = 5
對於第二部分:
a,x = 5, 4
則a = 5和x = 4 所以x不等於之前的情況。有人能解釋爲什麼這是真的嗎?
我是Udacity的計算機科學入門課程的新手。關於交換價值的問題我們有一個相當簡單的問題,我不太明白。下面是問題:交換價值
以下哪個語句序列使變量X的值與語句之前的值相同?假設a和x都指代這個代碼之前的整數值。
爲什麼這是真的?
a,x = x,a
a,x = x,a
例如,如果我有:
a,x = 4,5
然後 一個= 4且x = 5
對於第二部分:
a,x = 5, 4
則a = 5和x = 4 所以x不等於之前的情況。有人能解釋爲什麼這是真的嗎?
這只是交換,然後再次交換。
>>> a = 2
>>> x = 1
>>> a,x = x,a # We swapped them, so a = 1 and x = 2 now
# During evaluation, this statement will be equivalent to "a,x = 1,2"
>>> a,x = x,a # And now we swap them again, so they're back to their original values
# During evaluation, this statement will be equivalent to "a,x = 2,1"
>>> a
2
>>> x
1
看起來你缺少的是值的變化在中間。你不能在開始時使用x
和a
,在你的例子中用4和5代替所有的事件,因爲x
和a
在操作過程中發生了變化。
謝謝!我現在知道了。 – johnnewbie
發生這種情況是因爲Python的所謂拆包作業_工作。實質上,解釋器從賦值語句的左側創建一個目標列表,並從賦值語句的右側創建一個值列表,然後將值賦給目標。
所以在
a, b = 4, 5
要分配4 a
和5 b
。然後
a, b = b, a
分配5(的b
的電流值),以a
和4(的a
的電流值),以b
。
重複上一條語句因此將值切換回原始變量。
另外,對於這兩個語句,您應該使用'a,x = x,a',而不是用您選擇的隨機整數替換'x'和'a'。 – 3442
這些陳述都沒有對他們有任何「真相」。他們都是任務。 – dashiell
因爲它交換了兩次。 –