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

Python循环调用自定义函数如何正确存储每次输出结果

问题出错的核心原因

你当前的写法存在3个基础逻辑问题:

  • 函数内部生成的x、y属于局部作用域变量,函数运行结束后外部代码无法直接读取,必须通过return语句将结果抛出,才能在函数外拿到生成的数组
  • 第一种循环写法for i in myfunction(range(10))逻辑错误:你的需求是重复执行10次函数调用,不是遍历单次函数运行的返回结果
  • 初始化存储列表时写了Xtotal=[0]、Ytotal=[0],后续追加结果时会把初始的无效值0带入,最终计算平均值时会出现统计偏差,存储列表应该初始化为空。
正确实现方法

第一步:补全函数的返回逻辑

首先确认你的自定义函数末尾添加了返回语句,把内部生成的x、y数组抛出:

def myfunction():
    # 此处保留你原本生成x、y数组的全部逻辑
    # 示例x数组和你给出的样例一致
    x = [0, 1, 2, 1, 2, 3, 4, 5, 6, 7, 6, 7, 8, 9, 10]
    y = [] # 替换为你自己的y数组生成逻辑
    return x, y # 必须添加该行,将两个结果返回给调用处

第二步:循环调用并存储结果

初始化空的存储列表,循环10次调用函数,每次调用时用变量接收返回的当次结果,再追加到总存储列表中:

# 初始化为空列表,不要预置无效值
Xtotal = []
Ytotal = []

# 不需要使用循环变量时,用_做占位符即可
for _ in range(10):
    # 用两个变量接住本次函数调用返回的x、y数组
    current_x, current_y = myfunction()
    Xtotal.append(current_x)
    Ytotal.append(current_y)

运行完成后,Xtotal和Ytotal都是长度为10的嵌套列表,每个元素对应单次函数调用生成的x、y数组,完全满足后续求平均值的需求。

后续求平均值参考

如果需要计算10次结果逐位置的平均值,可以直接用numpy实现:

import numpy as np
# 计算x数组逐位置的10次结果平均值
x_position_avg = np.mean(Xtotal, axis=0)
# 计算y数组逐位置的10次结果平均值
y_position_avg = np.mean(Ytotal, axis=0)

如果需要计算所有元素的总平均值,把axis=0参数去掉即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:36:25