![](/img/trans.png)
[英]Using a for-loop to reference each item in a list (instead of just the last item)
[英]Using the last element of a list as the item for a for-loop
很抱歉這個措辭繁瑣的問題,但給出了以下數組:
x = [1,2,3,4]
當我使用帶有以下循環的第一個索引遍歷它時:
for x[0] in x:
print(x)
我得到以下預期結果:
[1, 2, 3, 4]
[2, 2, 3, 4]
[3, 2, 3, 4]
[4, 2, 3, 4]
但是,當我使用x
的最后一個索引執行以下循環時:
for x[-1] in x:
print(x)
我希望得到以下結果,稱之為“結果 1”(我目前的想法是,對於每次迭代,當前迭代的值替換x
的最后一個元素):
[1, 2, 3, 1]
[1, 2, 3, 2]
[1, 2, 3, 3]
[1, 2, 3, 4]
但相反,我明白了,稱之為“結果 2”:
[1, 2, 3, 1]
[1, 2, 3, 2]
[1, 2, 3, 3]
[1, 2, 3, 3]
有人可以解釋為什么我得到“結果 2”嗎? 我不明白為什么我得到的是“結果 2”而不是“結果 1”?
編輯:對不起nums
應該被稱為x
。
您的循環實際上等效於:
x[3] = x[0]
print(x)
x[3] = x[1]
print(x)
x[3] = x[2]
print(x)
x[3] = x[3]
print(x)
最后一次迭代沒有改變任何東西,因為它給自己分配了一個元素。
要獲得預期的結果,您可以執行以下操作:
for x[0] in x[:]:
print(x)
x[:]
復制x
,因此您不會修改您正在迭代的同一個列表。
for x[-1] in x:
依次將迭代值分配給列表的最后一個元素。 當您迭代最后一個值時,您已經將其更改為“3”,這就是您得到的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.