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

