我有一个包含空列表的列表:
list1 = [[], [], [], [], [], 'text', 'text2', [], 'moreText']
Run Code Online (Sandbox Code Playgroud)
如何删除空列表以便我得到:
list2 = ['text', 'text2', 'moreText']
Run Code Online (Sandbox Code Playgroud)
我尝试了list.remove(''),但这不起作用.
Sve*_*ach 93
尝试
list2 = [x for x in list1 if x != []]
Run Code Online (Sandbox Code Playgroud)
如果你想摆脱所有"麻痹"的东西,比如空字符串,空元组,零,你也可以使用
list2 = [x for x in list1 if x]
Run Code Online (Sandbox Code Playgroud)
lun*_*orn 62
您可以使用filter()而不是列表理解:
list2 = filter(None, list1)
Run Code Online (Sandbox Code Playgroud)
如果None用作第一个参数filter(),则过滤掉给定列表中的每个值,该列表False位于布尔上下文中.这包括空列表.
它可能比列表理解稍快,因为它只在Python中执行单个函数,其余的在C中完成.
调用filter与None将过滤掉列表中的所有falsey值(一个空列表是)
list2 = filter(None, list1)
Run Code Online (Sandbox Code Playgroud)
>>> list1 = [[], [], [], [], [], 'text', 'text2', [], 'moreText']
>>> list2 = [e for e in list1 if e]
>>> list2
['text', 'text2', 'moreText']
Run Code Online (Sandbox Code Playgroud)