[英]Check if all values in a list are bigger than certain number x and smaller than y?
[英]Removing all values bigger than desired number from the list
L=[10,19,20,30,8,11,9]
i=0
while i==0:
while L[i]<=12:
i+=1
else:
L.pop(i)
i=0
您好,我想从列表中删除大于 12 的值。 我得到了我想要的列表,但我也收到了一条错误消息,上面写着“列表索引超出范围”,即使我在循环结束时使 i=0。 我该如何解决?
一个无需创建新列表的解决方案
L=[10,19,20,30,8,11,9]
i=0
while i < len(L):
if L[i] > 12:
L.pop(i)
else:
i += 1
当您执行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)
那应该会使您的实际错误消失。 但这不是处理问题的最佳方法。 我仍然建议以相反的顺序处理列表。
您可以使用filter
:
L=[10,19,20,30,8,11,9]
#For python 2
L1 = filter(lambda x: x < 12, L)
#For python 3, wrap filter with list
L1 = list(filter(lambda x: x < 12, L))
print (L1)
虽然这不是最好的方法,但它可能是您正在寻找的理想修复
L=[10,19,20,30,8,11,9]
i=0
while i==0:
while L[i]<=12:
if i==len(L)-1:
break
i+=1
else:
L.pop(i)
i=0
尝试pandas
以获得更简单的答案
import pandas as pd
df = pd.DataFrame({'A': [10,19,20,30,8,11,9]})
final_list = df[df['A'] <= 12]['A'].values.tolist()
最简单的答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.