首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中删除无嵌套列表?

如何在Python中删除无嵌套列表?
EN

Stack Overflow用户
提问于 2018-07-19 06:22:25
回答 3查看 282关注 0票数 0

我有一个带有None的列表,我想删除这两个列表,这样数据就会变成空的。但是由于某种原因,在第一个列表被删除后,for循环似乎被中止了,我遗漏了什么?

代码语言:javascript
复制
data = [[1531785600000, None, None, None, None, 0.0], [1531872000000, None, None, None, None, 0.0]]

for i,d in enumerate(data) :
    if None in d :
        del data[i]
data
Out[128]: [[1531872000000, None, None, None, None, 0.0]]

# Expected result :
data
Out[130]: []

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-19 06:32:18

永远不要从枚举循环中的列表中删除元素。因为一旦在第一次迭代中删除了data[0],列表本身的id就会修改,并且只有一个元素,所以下一个enumerate不会返回任何内容(它认为已经遍历了所有元素)。

更好的方法是:

代码语言:javascript
复制
data = [x for x in data if None not in x]
票数 0
EN

Stack Overflow用户

发布于 2018-07-19 06:31:53

在迭代同一数组时,您正在删除数据数组的成员。这从来都不是一个好的解决方案。

要删除不包含None的数据的成员,您可以尝试执行以下操作:

代码语言:javascript
复制
data = [[1531785600000, None, None, None, None, 0.0], [1531872000000, None, None, None, None, 0.0]]

data = [d for d in data if None not in d]
print(data)

输出:

代码语言:javascript
复制
[]
票数 1
EN

Stack Overflow用户

发布于 2018-07-19 06:30:30

代码语言:javascript
复制
data = [[1531785600000, None, None, None, None, 0.0], [1531872000000, None, None, None, None, 0.0]]

del data[:]

Output: []
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51411789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档