如何使用迭代器循环重置列表并重新填充,无需创建多个新列表
实现方案
核心思路
- 在外层循环中每次初始化
arr1、arr2为空列表,复用变量名的同时不会产生额外的内存占用,适配大体积numpy数组的处理需求 - numpy数组迭代器会自动记录已读取的位置,无需手动维护读取偏移量
完整可运行代码
import numpy as np import itertools # 创建100个样本的数组,大数组逻辑完全通用 array = np.random.rand(100) # 转换为迭代器 iter_array = iter(array) # 总共执行5次:首次+额外重复4次,刚好取完100个元素 for run_times in range(5): # 每次循环开始重置两个列表,复用变量不新增内存 arr1 = [] arr2 = [] # 单次循环取两组各10个元素 for _ in itertools.repeat(None, 10): a = next(iter_array) arr1.append(a) b = next(iter_array) arr2.append(b) # 此处可添加你对当前轮次arr1、arr2的处理逻辑 # 示例:打印当前轮次两个列表的长度验证 print(f"第{run_times+1}轮处理:arr1长度{len(arr1)},arr2长度{len(arr2)}")
说明
- 原示例代码中的
arr.append(a)为笔误,已修正为arr1.append(a) - 每次循环结束后,
arr1和arr2会在下一轮循环开头被重新初始化,不会保留上一轮的数据,也不会产生多余的列表对象 - 即使原numpy数组元素超过10万个,该方案的内存占用始终稳定,仅会存储当前轮次的20个元素
内容的提问来源于stack exchange,提问作者Katty_one
相关产品推荐
相关产品推荐

