You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环简化:批量提取列表每10条记录及索引优化

解决方案

先说说你原代码里的几个问题:重复定义A1到A10完全没必要,手动累加索引容易写错,而且每次循环都重置accs_lst,最后只能拿到最后一组数据,这肯定不是你想要的结果。

下面是两种更简洁高效的写法,完全解决你的问题:

1. 合并所有处理后的数据到单列表

如果你的目标是把所有处理后的记录都放到accs_lst里,用切片+列表推导式就能搞定,连循环变量都不用手动维护:

TEST = [
    'AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH', 'II', 'JJ',
    '11', '22', '33', '44', '55', '66', '77', '88', '99', '10',
]

accs_lst = []
batch_size = 10

# 用range自动生成步长为10的起始索引,直接遍历就行
for start in range(0, len(TEST), batch_size):
    # 切片取当前10条,批量处理换行符,再一次性加入目标列表
    current_batch = [item.rstrip('\n') for item in TEST[start:start+batch_size]]
    accs_lst.extend(current_batch)

# 打印结果
for item in accs_lst:
    print(item)

关键优化点:

  • range(0, len(TEST), 10)自动生成0、10、20…这些起始位置,替代你手动index +=10的操作,完全不会出错
  • TEST[start:start+10]是Python的切片操作,底层做了性能优化,比逐个取TEST[start+i]快得多,处理10万+条数据时差距会很明显
  • 列表推导式一次性处理完当前批次的所有rstrip操作,彻底删掉A1到A10这些冗余变量
  • extend比多次调用append效率更高,直接把整个批次的元素加到目标列表里

2. 按10条一组分组保存

如果需要把原列表分成每10条一组的子列表(比如后续要批量处理每组数据),只需要把extend改成append:

TEST = [
    'AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH', 'II', 'JJ',
    '11', '22', '33', '44', '55', '66', '77', '88', '99', '10',
]

grouped_lists = []
batch_size = 10

for start in range(0, len(TEST), batch_size):
    group = [item.rstrip('\n') for item in TEST[start:start+batch_size]]
    grouped_lists.append(group)

# 打印每组数据
for idx, group in enumerate(grouped_lists, 1):
    print(f"第{idx}组:", group)

额外说明:

  • 切片会自动处理最后一批不足10条的情况,比如原列表有100005条数据,最后一批会自动取5条,不用额外加边界判断
  • 不管是现在的10条还是后续要改成20条,只需要修改batch_size一个变量,代码维护成本极低

内容的提问来源于stack exchange,提问作者Irinel Iovan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:48:06