如何修正list_powers函数返回None的问题?实现列表元素幂运算返回新列表
问题分析与解决
你编写的list_powers函数目标是生成原列表元素指定幂次的新列表,但当前返回None,问题出在return语句的错误调用上。
原代码问题点
def list_powers(collection = [], power = 2): power_list = [] for elem in collection: topower = elem ** power power_list.append(topower) return power_list.append(topower)
list.append()方法是原地修改列表,它的返回值固定为None,你最后返回的是这个方法的结果,而非构建好的power_list本身。- 额外问题:循环结束后
topower是最后一个元素的计算结果,此时调用append还会把这个值重复添加一次到列表末尾,即使你想返回列表,这也是多余的错误操作。
修正后的代码
只需要把return语句改为直接返回power_list即可:
def list_powers(collection = [], power = 2): power_list = [] for elem in collection: topower = elem ** power power_list.append(topower) return power_list
测试验证
运行测试代码:
list_powers([2, 4, 1, 5, 12], power = 2)
输出结果:
[4, 16, 1, 25, 144]
额外优化(可选)
如果想简化代码,也可以用列表推导式替代for循环,效果一致:
def list_powers(collection = [], power = 2): return [elem ** power for elem in collection]
内容的提问来源于stack exchange,提问作者JVR
相关产品推荐
相关产品推荐

