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

如何在Python中删除无嵌套列表?,python,Python,我有一个带有无的列表,我想删除这两个列表,以便数据变为空。但是由于某种原因,在删除第一个列表后,for循环似乎被中止,我缺少了什么 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]:

我有一个带有
的列表,我想删除这两个列表,以便数据变为空。但是由于某种原因,在删除第一个列表后,
for
循环似乎被中止,我缺少了什么

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]: []
多谢各位

data = [[1531785600000, None, None, None, None, 0.0], [1531872000000, None, None, None, None, 0.0]]

del data[:]

Output: []
命令式方法 列表理解 输出: []


在迭代同一数组时,您正在删除数据数组的成员。这永远不是个好办法

要删除不包含任何数据的成员,可以尝试以下操作:

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)
输出:

[]

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

更好的方法是:

data = [x for x in data if None not in x]

谢谢,不幸的是,它还删除了没有
None
的嵌套列表。
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)
[]
data = [x for x in data if None not in x]