从列表列表中删除项目:pythonic方式

enn*_*ppi 3 python loops list

我有这种列表列表(只有两个嵌套级别):

my_list = [['A'], ['B'], ['C','D','A','B'], ['E'], ['B', 'F', 'G'], ['H']]

我有一个要删除的项目列表my_list:

to_del = ['A','B']

这是我从代码中删除to_del元素的想法my_list:

for i in my_list:
    for d in to_del:
        if d in i:
            i.remove(d)
Run Code Online (Sandbox Code Playgroud)

输出: [[], [], ['C', 'D'], ['E'], ['F', 'G'], ['H']]

在这里我的问题:

  • 你能建议一个更加pythonic /优雅的方式来做同样的事情
  • 你能否提出一种智能的方法来概括嵌套级别的数量,例如: my_list = [ ['A'], ['B'], ['C', ['D', 'E', ['F']], 'G'], ['H'] ]
  • 理想的方法将有一个布尔参数empty_lists来决定是否保留空列表.

Yev*_*ych 7

尝试列表理解:

my_list = [[x for x in sublist if x not in to_del] for sublist in my_list]
Run Code Online (Sandbox Code Playgroud)

输出:

>>> my_list
[[], [], ['C', 'D'], ['E'], ['F', 'G'], ['H']]
Run Code Online (Sandbox Code Playgroud)