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
相关产品推荐
相关产品推荐

