如何从循环中的嵌套列表中删除记录?

How to delete record from a nested list in a loop?

我有这样的嵌套列表 [a,1],[b,2],[c,3]

我的代码:

for i in list:
    if i[0] == 'b':
        del i

那是行不通的。代码不会崩溃,但也不会删除。

我正在尝试类似的东西:

for i in list:
    if something:
        del i[1]
        del i[0]

但是 returns [a,1],[],[c,3] 我对此并不满意。

在迭代列表的同时从列表中删除不是一个好主意,请尝试改用列表理解:

List = [L for L in List if L[0] != 'b']

另一个答案很好,但是回答你的问题(即使在迭代时删除不是一个好习惯):

list = [['a',1],['b',2],['c',3]]
for i in list:
    if i[0] == 'b':
        list.remove(i)
        
print(list)

您也可以避免像这样从正在迭代的列表中删除:

list = [['a',1],['b',2],['c',3]]
for i in list.copy():
    if i[0] == 'b':
        list.remove(i)
        
print(list)

不过,另一个示例中的列表推导更清晰、更易读。

您可以为此使用 enumerate 方法。看看下面的代码片段。

li = ['a' , 'b' , 'c' , 'd']
for i , elm in enumerat(li):
    if elm == 'a':
        del li[i]

使用 enumerate 函数,您将可以访问两个值。代码中的第一个值 i 是元素的索引,第二个值是元素本身。
可以在每次迭代中检查self中的元素,然后根据需要使用索引修改列表。