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

如何使用迭代器循环重置列表并重新填充,无需创建多个新列表

实现方案

核心思路

  • 在外层循环中每次初始化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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:27:01