Python looping函数实现报错求助:返回pyplot对象及绘图问题
问题解决:AttributeError: 'list' object has no attribute 'savefig'
错误原因
你的looping函数返回了plt.plot(x, np.array(y), 'r.')的结果,而plt.plot()实际返回的是包含Line2D对象的列表,并非题目要求的pyplot(即plt)对象。测试代码中的save_plt函数需要调用plt.savefig(),但传入的是列表,自然触发属性不存在的错误。
修正后的代码
import numpy as np import matplotlib.pyplot as plt def looping(my_func, interval, limit): x = np.arange(0, limit, interval) # 用列表推导式简化y值生成,原循环append写法也可保留 y = [my_func(i) for i in x] # 绘制红色点标记的图表 plt.plot(x, y, 'r.') # 返回pyplot对象(plt),而非plot方法的返回值 return plt
关键改动说明
- 移除了返回
plt.plot()结果的逻辑,改为完成绘图后直接返回plt对象,完全符合题目要求的返回值类型。 - 用列表推导式简化了y值的生成过程,代码更简洁(原循环写法也能正常工作,可根据习惯选择)。
内容的提问来源于stack exchange,提问作者johnborris
相关产品推荐
相关产品推荐

