Python:如何从列表中删除空列表?
我有一个包含空列表的列表:
list1 = [[], [], [], [], [], 'text', 'text2', [], 'moreText']
我想把这些空列表去掉,最后得到:
list2 = ['text', 'text2', 'moreText']
我试过用 list.remove(''),但这样不行。
9 个回答
10
用 None
来调用 filter
的话,会把列表中所有“假”的值过滤掉(而空列表就是一种“假”的值)。
list2 = filter(None, list1)
91
你可以用 filter()
来代替列表推导式:
list2 = filter(None, list1)
如果在 filter()
的第一个参数中使用 None
,它会过滤掉给定列表中所有在布尔上下文中为 False
的值。这包括空列表。
它可能会比列表推导式稍微快一点,因为它只在 Python 中执行一个函数,其余的操作都是在 C 语言中完成的。
170
试试这个
list2 = [x for x in list1 if x != []]
如果你想去掉所有“假”的东西,比如空字符串、空元组、零,你也可以使用下面这个
list2 = [x for x in list1 if x]