Zhyan1212 2022-06-22 14:45 采纳率: 63.6%
浏览 30
已结题

python对list数据分割

list index out of range
#   分割数据,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
<class 'list'> 10378
         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
data_divide1的type是list,它的len是10378,但是构建循环b < 10378,运行结果提示却是list index out of range,明明没有超过,令b<5189,也就是10378/2,就正常运行,为什么这里索引变成了一半。
我想要达到的结果:将数据分割为每个索引中包含2000个元素,不足的丢弃。
  • 写回答

2条回答 默认 最新

  • 於黾 2022-06-22 15:12
    关注

    因为你在循环里执行了del,所以整体数量改变了
    同时,你在中间删除了一项,那么后续项会向前移动,而你的b在del之后依然+1,相当于中间跳过了一项没有处理
    解决办法:
    不要从0开始循环,从后往前循环
    b=len(data_divide1)-1
    while b>-1:
    b-=1

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月30日
  • 已采纳回答 6月22日
  • 创建了问题 6月22日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度