当列表项是列表时如何从列表中删除项

时间:2019-02-26 02:43:18

标签: python list nested-lists

我有一个列表列表:

[['Ari', 'male', 'learning'],['Fran', 'female', 'skilled']]

如果我想删除其中包含“ Ari”的列表项,如何删除整个项目,这样我剩下的就是:

[['Fran', 'female', 'skilled']]

此刻我正在尝试:

for item in list:
    if 'Ari' in item:
        # Delete item...

2 个答案:

答案 0 :(得分:1)

使用列表推导并检查'Ari'

print([i for i in list if not 'Ari' in i])

或关键字的顺序几乎没有不同

print([i for i in list if 'Ari' not in i])

输出:

[['Fran', 'female', 'skilled']]

但是也不要命名列表list,因为那样会覆盖实际的关键字。

答案 1 :(得分:1)

如果要修改原始列表,则可以使用列表理解功能创建一个删除了所需项目的新列表,然后重新绑定到列表变量:

>>> original = [['Ari', 'male', 'learning'],['Fran', 'female', 'skilled']]
>>> original = [item for item in original if 'Ari' not in item]
>>> original
[['Fran', 'female', 'skilled']]

这将创建一个 new 列表,然后将新列表绑定到变量original。如果原始列表很大,则可以避免创建重复列表并就地更新:

original = [['Ari', 'male', 'learning'],['Fran', 'female', 'skilled']]
original[:] = [item for item in original if 'Ari' not in item]
>>> original
[['Fran', 'female', 'skilled']]

请注意使用切片符号([:])来更新原始列表。