【发布时间】:2016-05-09 07:37:17
【问题描述】:
我想删除空子列表,有的方法失败了,有的方法成功了。为什么 ? 担心的方式:
data=[[],[],[],[],[]]
for rows in data:
if len(rows)==0:
list.remove(rows)
print data
结果是[[],[]]。这不是我的预期结果[]
正确的方法(我朋友告诉我,谢谢他):
list = [[],[],[],[],[]]
a=list(filter(lambda x: [] != x, list))
print a
结果是我预期的空列表[]
【问题讨论】:
-
这是因为您正在遍历更改大小的列表。我很惊讶您没有收到第一个代码的错误
-
Whitefret 是正确的。在从列表中删除项目时迭代列表通常是一个坏主意。
-
@Whitefret python 的列表迭代器基本上是一个递增索引,直到引发 IndexError。这也解释了观察到的结果以及为什么没有引发错误。但这并不意味着人们应该依赖这种行为......
-
@IljaEverilä 感谢您的精确!
标签: python