如何在不使用numpy和map的情况下实现数组与整数相乘?代码求助
数组与整数相乘的问题修复方案
原代码无法得到预期结果的原因是:函数multArray内部通过列表推导式创建了新列表,并将局部变量A指向这个新列表,但这不会改变外部传入的原始列表。而测试循环中直接打印的还是未修改的原始A,没有接收函数返回的新列表。
以下是两种可行的解决方法:
方法1:接收函数返回的新列表
保持原函数的逻辑不变,修改测试代码,直接打印函数返回的计算结果:
def multArray(A, k): A = [i * k for i in A] return A # 测试用例 tests = (([5,12,31,7,25],10), ([-5,12,-31,7,25],10), ([-5,12,-31,7,25],-1), ([-5,12,-31,7,25],0), ([],10), ([],-1)) # 打印函数返回的计算结果 for (A,k) in tests: print(multArray(A, k))
方法2:原地修改原始列表
如果需要直接修改传入的列表(不创建新列表),可以修改函数逻辑,通过索引遍历原地更新每个元素:
def multArray(A, k): for i in range(len(A)): A[i] *= k # 测试用例 tests = (([5,12,31,7,25],10), ([-5,12,-31,7,25],10), ([-5,12,-31,7,25],-1), ([-5,12,-31,7,25],0), ([],10), ([],-1)) # 调用函数后直接打印已修改的原列表 for (A,k) in tests: multArray(A, k) print(A)
两种方法都能输出预期结果:[50, 120, 310, 70, 250], [-50, 120, -310, 70, 250], [5, -12, 31, -7, -25], [0, 0, 0, 0, 0], [], []
内容的提问来源于stack exchange,提问作者yeppidyyepster65
相关产品推荐
相关产品推荐

