我有一个带有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]: []
谢谢
答案 0 :(得分:1)
x = [[1531785600000, None, None, None, None, 0.0], [1531872000000, None, None, None, None, 0.0]]
y = []
for i in x:
if None not in i:
y.append(i)
print(y)
y = [i for i in x if None not in i]
print(y)
[]
答案 1 :(得分:1)
您要在迭代同一数组时删除数据数组的成员。那永远不是一个好的解决方案。
要删除不包含任何数据的成员,您可以尝试以下操作:
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)
输出:
[]
答案 2 :(得分:0)
永远不要在枚举循环中从列表中删除元素。因为一旦在第一个迭代中删除了data[0]
,列表本身的ID现在就会被修改并且只有一个元素,因此下一个enumerate
不会返回任何内容(它认为它已经遍历了所有元素)。
更好的方法:
data = [x for x in data if None not in x]
答案 3 :(得分:-1)
data = [[1531785600000, None, None, None, None, 0.0], [1531872000000, None, None, None, None, 0.0]]
del data[:]
Output: []