修复mock_function函数:实现数组元素按条件平方/立方并返回数组
问题分析与修复方案
原代码的核心错误
else分支里的return mock_answer直接终止了函数:第一次遇到≤5的元素(数组中的4)就直接返回,循环根本没机会处理后续元素。- 没有将每个处理后的元素加入列表,反而最后调用
empty_list.append(mock_answer)——但append方法返回的是None,而且只添加了最后一个处理的元素,完全不符合需求。
修复后的循环版本(兼容普通列表和numpy数组)
import numpy as np def mock_function(x): result_list = [] for i in x: if i > 5: processed = i ** 2 else: processed = i ** 3 result_list.append(processed) # 每个元素处理完就加入结果列表 return result_list x = np.array([7,4,1,10,3,6]) print(mock_function(x)) # 输出: [49, 64, 1, 100, 27, 36]
更高效的numpy向量化版本(适合numpy数组输入)
如果输入是numpy数组,用向量化操作比循环更快,代码也更简洁:
import numpy as np def mock_function(x): return np.where(x > 5, x ** 2, x ** 3) x = np.array([7,4,1,10,3,6]) print(mock_function(x)) # 输出: [ 49 64 1 100 27 36]
内容的提问来源于stack exchange,提问作者TempAcc
相关产品推荐
相关产品推荐

