簡體   English   中英

使用列表的最后一個元素作為 for 循環的項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM