You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python列表元素求平方根代码返回全None的错误原因排查

代码错误定位与修正方案

具体错误点

  • 核心逻辑错误:误判了list.append()方法的返回值特性
    • Python的list.append()是原地修改列表的方法,自身没有显式返回值,调用后固定返回None
    • 新手最容易在这里踩坑:会下意识以为列表推导式里的append操作,会把最终修改后的squareRoots列表作为元素收集,但实际上列表推导式只会遍历每个元素,把每一轮执行的表达式的返回值存进新列表。你写的[squareRoots.append(math.sqrt(i)) for i in l]每一轮循环执行的append动作,返回值都是None,最终攒出来的result列表自然全是None。你最后返回result,自然输出[None, None, None]——真正存了平方根的squareRoots列表从头到尾根本没被返回。
  • 前置依赖遗漏:代码没有导入math模块,就算修正了返回值的问题,运行时也会触发NameError,无法识别math.sqrt方法。

适配你精简代码思路的正确实现

完全可以去掉冗余的空列表、不必要的append操作,直接把计算逻辑整合到列表推导式里,代码更短也不会出现逻辑偏差:

import math

def square_roots(l):
    return [math.sqrt(i) for i in l]

l = [1,2,3]
print(square_roots(l))

运行后会正常输出每个元素的平方根结果:[1.0, 1.4142135623730951, 1.7320508075688772]

补充:如果追求极致精简,函数体不需要额外中间变量,直接用列表推导式返回结果即可,完全匹配你最初想写精简代码的目标。

内容的提问来源于stack exchange,提问作者jimmys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 21:15:05