Python:如何从列表中删除空列表?

102 投票
9 回答
168599 浏览
提问于 2025-04-16 10:53

我有一个包含空列表的列表:

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]

撰写回答