删除lis中的模式

2024-06-09 17:28:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我的清单如下:

list=[80,"error",100,74,72,71,"error",39,38,63,"error",82,"error",62,75,23,77,87,"error",36]

我想从列表中删除“error”:

llist=len(list)

for i in range(llist):
     if list[i]=="error":
         del list[i]
         llist-=1

print(list)

但是编译器仍然显示“if list[i]=”error“: 索引器错误:列表索引超出范围”

我错在哪里? 提前谢谢


Tags: in列表forlenif编译器错误range
3条回答

您的解决方案

llist=len(list_)

for i in range(llist):
    try:
         if list_[i]=="error":
             del list_[i]
             llist-=1
    except IndexError:
        pass
print(list_)

输出

[80, 100, 74, 72, 71, 39, 38, 63, 82, 62, 75, 23, 77, 87, 36]

建议

看起来您只需要列表中的numbers

import numbers
print([x for x in list_ if isinstance(x, numbers.Number)])

输出

[80, 100, 74, 72, 71, 39, 38, 63, 82, 62, 75, 23, 77, 87, 36]

print([num for num in list_ if isinstance(num, (int,float))])

首先不要使用关键字list作为变量名。那么条件列表理解是一种简单的方法:

my_list = [i for i in my_list if i != "error"]

这里的问题是,您在尝试遍历列表时修改了列表长度。错误的完美配方

尝试使用remove函数

l = ['a', 'b', 'error', 'c']
l.remove('error')

相关问题 更多 >