python 2d列表删除目标

问题描述

vals = [[2,2,2],[2,3],3,4]]
targets = [2]

def remove_vals(vals,targets):
    lst = []
    for lst_ in vals:
        for x in lst_:
            if x not in targets:
                lst.append(x)  
    return lst

输出[3,4] 我需要的输出[],[3],[3,4]

解决方法

列表理解在这里会更简单。在这种情况下,您将需要一个嵌套列表理解来保留输入列表的嵌套结构:

[[i for i in l if i not in targets] for l in vals]
# [[],[3],[3,4]]

如果要使用常规的for循环,可以执行以下操作:

lst = []
for lst_ in vals:
    new_l = []
    for x in lst_:
        if x not in targets:
            new_l.append(x)  
    lst.append(new_l)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...