我嘗試將超過 10 的整數(在本例中為 13)附加到MyList以下代碼,但發生錯誤。
MyList = [2,2,2,7,13]
for i in MyList:
if i >= 10:
MyList.append(i)
print(MyList)
KeyboardInterrupt Traceback (most recent call last)
<ipython-input-4-b61d86f65af6> in <module>
2 for i in MyList:
3 if i >= 10:
----> 4 MyList.append(i)
5
6 MyList
如果我append按照以下方式使用,它可以作業。有人可以告訴我區別嗎?
MyList = [2,2,2,7,13]
for i in range(len(MyList)):
if MyList[i] >= 10:
MyList.append(MyList[i])
print(MyList)
[2, 2, 2, 7, 13, 13]
uj5u.com熱心網友回復:
第一個示例不起作用,因為它陷入了無限回圈。你不斷地附加到你正在遍歷的那個串列中。如果你要在任何時候列印出來,它看起來像這樣[2,2,2,7,13,13,13,13,13,13,13.....]
在第二個示例中,您在一開始就確定串列的大小(使用len函式),并且一旦更新陣列就不會更新,因為它已經計算過了。
uj5u.com熱心網友回復:
您好,歡迎來到 StackOverflow,
在上面的代碼中,您不斷地向串列中添加新值,因此您的 for 回圈永遠不會結束。
在下面的示例中,您首先獲取串列的長度,并且僅回圈 len(MyList) 次,而不是無限次。
uj5u.com熱心網友回復:
在下面的代碼中,您將在 MyList 中添加數字并僅對其進行迭代。
MyList = [2,2,2,7,13]
for i in MyList:
if i >= 10:
MyList.append(i)
print(MyList)
但在下面你只是迭代串列大小的時間。有一個限制。
MyList = [2,2,2,7,13]
for i in range(len(MyList)):
if MyList[i] >= 10:
MyList.append(MyList[i])
uj5u.com熱心網友回復:
您在對其MyList進行迭代時添加專案,在這種情況下會導致無限回圈。一個解決方案是創建另一個串列并在回圈后合并串列:
MyList = [2,2,2,7,13]
toAdd = []
for i in MyList:
if i >= 10:
toAdd.append(i)
MyList = toAdd
print(MyList)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/406011.html
標籤:
