我有一个带有None
的列表,我想删除这两个列表,这样数据就会变成空的。但是由于某种原因,在第一个列表被删除后,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]: []
谢谢
发布于 2018-07-19 06:32:18
永远不要从枚举循环中的列表中删除元素。因为一旦在第一次迭代中删除了data[0]
,列表本身的id就会修改,并且只有一个元素,所以下一个enumerate
不会返回任何内容(它认为已经遍历了所有元素)。
更好的方法是:
data = [x for x in data if None not in x]
发布于 2018-07-19 06:31:53
在迭代同一数组时,您正在删除数据数组的成员。这从来都不是一个好的解决方案。
要删除不包含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)
输出:
[]
发布于 2018-07-19 06:30:30
data = [[1531785600000, None, None, None, None, 0.0], [1531872000000, None, None, None, None, 0.0]]
del data[:]
Output: []
https://stackoverflow.com/questions/51411789
复制相似问题