从整个列表中删除特定的嵌套列表



我在python中有这样一个嵌套列表

[['NS1259', 163, 8.38, 268],
['NS6969', 88, 15.7, 620],
['NS4722', 155, 10.02, 343],
['NS3629', 150, 5.4, 530]]

我想创建一个函数,通过使用第一个字符串中的值从整个列表中删除任何一个嵌套列表。所以使用N6969,它会像这样结束

[['NS1259', 163, 8.38, 268],
['NS4722', 155, 10.02, 343],
['NS3629', 150, 5.4, 530]]

如果你想要一个函数,这里有一个列表推导式的例子:

def filteritem(iterable, element):
return [i for i in iterable if i[0] != element]

的例子:

l = [['NS1259', 163, 8.38, 268],
['NS6969', 88, 15.7, 620],
['NS4722', 155, 10.02, 343],
['NS3629', 150, 5.4, 530]]
new_list = filteritem(l, 'NS6969') # outputs a new list without the 'NS6969' line

您也可以使用filter来代替推导式:

list(filter(lambda x: x[0]!= 'NS6969', l))

你可以这样写:

big_list = [
['NS1259', 163, 8.38, 268],
['NS6969', 88, 15.7, 620],
['NS4722', 155, 10.02, 343],
['NS3629', 150, 5.4, 530]
]
for i in range(len(big_list)-1, -1, -1):
if big_list[i][0] == 'NS6969':
del big_list[i]

这个方法从头到尾都有效,当你删除一个项目时,可以避免忘记你在列表中的位置。如果您确定只有一个项目具有此键,那么您可以向前迭代并在删除项目后添加break。但是在这种情况下,你最好使用字典而不是列表。

另一个选项是每次创建一个新列表:

big_list = [x for x in big_list if x[0] != 'NS6969']

最新更新