[英]For loop running infinite python
試圖查找問題已經花費了5個小時,但無法確定for fn in L
無限運行for fn in L
原因for循環。
L=[]
N=int(raw_input())
for i in range(0,N):
L.append(list(raw_input().split()))
print L
for fn in L:
if 'insert'==fn[0]:
L.insert(int(fn[1]),int(fn[2]))
elif 'append'==fn[0]:
L.append(int(fn[1]))
elif 'remove'==fn[0]:
L.remove(int(fn[1]))
elif 'pop'==fn[0]:
L.pop(int(fn[1]))
elif 'index'==fn[0]:
L.index(int(fn[1]))
elif 'count'==fn[0]:
L.count(int(fn[1]))
elif 'sort'==fn[0]:
L.sort()
elif 'reverse'==fn[0]:
L.reverse()
else :
print L
提供給列表的輸入:
12
insert 0 5
insert 1 10
insert 0 6
print
remove 6
append 9
append 1
sort
print
pop
reverse
print
您正在循環中更改列表。 結果將是不可預測的。 您可以改為在列表的一部分上進行迭代:
for fn in L[:]:
# your code here
pass
這樣,當淺表副本(切片)中的項目用盡時,循環終止。
您在迭代列表元素的同時插入/刪除元素。 您還可以通過反轉列表來更改列表。 兩者都是對列表的變異操作,在迭代期間是不允許的。 在這種情況下,行為是不確定的。
for fn in L:
if ...:
L.insert(...)
您可以對用於循環的對象進行突變...最好將其反轉:p reverse <-reverse-> reverse <-reverse->
:p
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.