【发布时间】:2026-01-04 05:30:01
【问题描述】:
我想从 python 中的字符串列表中删除所有空字符串。
我的想法是这样的:
while '' in str_list:
str_list.remove('')
有没有更多的pythonic方法来做到这一点?
【问题讨论】:
-
@Ivo,这些说法都不是真的。您永远不应该使用
for x in list修改您迭代的列表如果您使用的是while loop,那很好。演示的循环将删除空字符串,直到没有更多的空字符串然后停止。实际上我什至没有看过这个问题(只是标题),但我回答的可能是完全相同的循环!如果您不想为了记忆而使用推导式或过滤器,这是一个非常 Pythonic 的解决方案。 -
永远不要更改您正在迭代的列表仍然是一个非常有效的观点:)
-
@EduardLuca 如果迭代列表的目的是更改它,那么这与您应该做的相反。您只需要小心,您知道这样做不会导致意外行为。
-
@EduardLuca, @JFA :关键是他没有遍历任何列表。如果他以
for var in list:的形式写了一些东西,他会这样做,但在这里,他写的是while const in list:。这不是迭代任何东西。它只是重复相同的代码,直到条件为假。 -
您可以使用过滤器删除空字符串。代码应该看起来像这样...
data = list(filter(None, str_list))