下面是一段代碼,它給出了輸出:0 1 2 2
。因爲a[-1]
訪問列表中的數字3,所以我期待輸出3 3 3 3
。網上給出的解釋是「每次迭代中a[-1]
變化的值」,但我不太明白如何或爲什麼。任何解釋都會很棒!for循環並遍歷列表
a = [0, 1, 2, 3]
for a[-1] in a:
print(a[-1])
下面是一段代碼,它給出了輸出:0 1 2 2
。因爲a[-1]
訪問列表中的數字3,所以我期待輸出3 3 3 3
。網上給出的解釋是「每次迭代中a[-1]
變化的值」,但我不太明白如何或爲什麼。任何解釋都會很棒!for循環並遍歷列表
a = [0, 1, 2, 3]
for a[-1] in a:
print(a[-1])
這裏發生了什麼是一個列表在循環過程中發生了變化。
讓我們看看下面的代碼片段:
a = [0, 1, 2, 3]
for a[-1] in a:
print a
輸出是:
[0, 1, 2, 0]
[0, 1, 2, 1]
[0, 1, 2, 2]
[0, 1, 2, 2]
每次迭代:
因此,它是這樣:
[0, 1, 2, 0]
;打印值爲0
[0, 1, 2, 1]
;打印值爲1
雖然做for a[-1] in a
,你實際上是通過列表和臨時存儲當前元素的值迭代爲a[-1]
。
你可以看到像這些指令的循環:
a[-1] = a[0] # a = [0, 1, 2, 0]
print(a[-1]) # 0
a[-1] = a[1] # a = [0, 1, 2, 1]
print(a[-1]) # 1
a[-1] = a[2] # a = [0, 1, 2, 2]
print(a[-1]) # 2
a[-1] = a[3] # a = [0, 1, 2, 2]
print(a[-1]) # 2
所以,當你是第三個要素,然後2
存儲到a[-1]
(其值是1
,但0
前3
上啓動)。
最後,當涉及到最後一個元素(以及迭代結束)時,存儲在a[-1]
中的最後一個值是2
,這解釋了爲什麼要打印兩次。
我從來沒有見過這樣的事情;我很想閱讀文章/教程/無論它是什麼顯示這個例子,你可以張貼鏈接到它嗎? – GingerPlusPlus
另外,恭喜你的第一個問題! (對新SO用戶的信心得以恢復) – GingerPlusPlus
不錯的問題。爲什麼'a [-1]'甚至被允許作爲循環變量... – timgeb