-
明月笑刀无情
您可以使用条件 列表理解来执行以下操作:l=[each for each in L if each<=12]l将:[10, 8, 11, 9]如果你不喜欢列表理解,你可以这样做:l=[]
for each in L:
if each<=12:
l.append(each)l将会和以前一样。
-
慕森卡
当您执行 a 时pop(),您正在通过缩短列表来更改列表。如果您想进行调用pop(),我建议以相反的顺序解析列表,从末尾开始,然后向开头进行。for i in range(len(L) - 1, -1, -1): if L[i] > 12: L.pop(i)但是,要直接回答您的问题,请更改代码以替换:L.pop(i)和:if i < len(L): L.pop(i)这应该会让你的实际错误消失。但这并不是解决问题的最佳方法。我仍然建议以相反的顺序处理列表。
-
ibeautiful
您可以使用filter:L=[10,19,20,30,8,11,9]#For python 2L1 = filter(lambda x: x < 12, L)#For python 3, wrap filter with listL1 = list(filter(lambda x: x < 12, L))print (L1)
-
慕姐4208626
一种带有 while 且不创建新列表的解决方案L=[10,19,20,30,8,11,9]i=0while i < len(L): if L[i] > 12: L.pop(i) else: i += 1
-
呼啦一阵风
虽然这不是最好的方法,但它可能是您正在寻找的修复方法L=[10,19,20,30,8,11,9]i=0while i==0: while L[i]<=12: if i==len(L)-1: break i+=1 else: L.pop(i) i=0