# 分割数据,2000个为一组
data_divide1=[]
a=0
while a < 80:
data_divide1.extend([data_exact1[a][i:i + 2000]for i in range(0, len(data_exact1[a]), 2000)])
a=a+1
print(type(data_divide1),len(data_divide1))
# 删除不足2000个元素的索引和值
b=0
while b < 10378:
if range(len(data_divide1[b])) != 2000 :
del data_divide1[b]
b=b+1
Traceback (most recent call last):
File "D:\pythonProject5\dataf.py", line 59, in <module>
if range(len(data_divide1[b])) != 2000 :
IndexError: list index out of range
因为你在循环里执行了del,所以整体数量改变了
同时,你在中间删除了一项,那么后续项会向前移动,而你的b在del之后依然+1,相当于中间跳过了一项没有处理
解决办法:
不要从0开始循环,从后往前循环
b=len(data_divide1)-1
while b>-1:
b-=1
if range(len(data_divide1[b])) != 2000 :
这个判断式肯定错,左边是 range() 右边是整数 取!=这个式子永远成立