代碼:
list=[0,1,2,3]
for list[-1] in list:
print(list)
輸出:
[0, 1, 2, 0]
[0, 1, 2, 1]
[0, 1, 2, 2]
[0, 1, 2, 2]
串列的最后一個元素是怎么來的
uj5u.com熱心網友回復:
的語法for <var> in <list>用于獲取串列中的每個元素,對其進行迭代,并在迭代期間將其存盤在var.
因此,您的代碼正在做的是遍歷 list 的每個元素list。并將其保存在串列的最后一個元素中。
這是正在發生的事情的分步演練:
list = [0, 1, 2, 3]
for list[-1] in list:
# First Iteration:
# list = [0, 1, 2, 3]
# First element in the list is 0.
# Store 0 in list[-1]
# list = [0, 1, 2, 0]
print list
# Second Iteration:
# list = [0, 1, 2, 0]
# Second element in the list is 1.
# Store 1 in list[-1]
# list = [0, 1, 2, 1]
print list
# Third Iteration:
# list = [0, 1, 2, 1]
# Third element in the list is 2.
# Store 2 in list[-1]
# list = [0, 1, 2, 2]
print list
# Fourth Iteration:
# list = [0, 1, 2, 2]
# Fourth element in the list is 2.
# Store 2 in list[-1]
# list = [0, 1, 2, 2]
print list
uj5u.com熱心網友回復:
很簡單,在您的代碼中,回圈是基于使用 print 替換數字之一。因此,如果您注意到它,您會看到回圈的數量(在您的情況下為 -1),它將替換最后一個(在情況下為 3)。如果要測驗它,請嘗試放置:
for list[0] in list:
它會列印你:
**output:
[0, 1, 2, 3]
[1, 1, 2, 3]
[2, 1, 2, 3]
[3, 1, 2, 3]**
uj5u.com熱心網友回復:
for回圈是花哨的賦值陳述句。您可以撰寫一個具有顯式賦值的等效while回圈來模擬for回圈的行為。
list = [0,1,2,3]
itr = iter(list)
while True:
try:
list[-1] = next(itr)
except StopIteration:
break
print(list)
每次呼叫next都會從串列中回傳一個連續的值。前三個值永遠不會改變,但最后一個值由賦值陳述句依次設定為第一個、第二個、第三個等。當next最終到達串列的末尾時,它回傳當前值,即前一次迭代設定的值,即2(不是3原始串列中的那個)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413361.html
標籤:
