簡體   English   中英

For循環運行無限python

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

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