如何用for循环计算Python列表均值?代码异常求排查
帮你找出for循环计算均值的代码错误
嘿,我来帮你捋捋代码里的问题——你现在得到的4、5、1其实是三个测试列表的长度,根本没走到均值计算那一步,具体问题和修正方案如下:
1. 提前return直接跳过了均值计算
你代码开头的if i < len(p)判断(i初始是0,只要列表非空就肯定成立),进入分支后执行完for循环就直接return i了!这时候i刚好等于列表的长度(因为每次循环i加1,循环了len(p)次),所以直接返回了长度,后面的mean = i / len(p)和return mean完全没机会运行,这是最核心的问题。
2. 累加逻辑的冗余(虽不影响但没必要)
你写了for t in p来遍历列表,但却用p[i]来累加元素,其实可以直接用t来加,这样就不用手动维护i变量了,代码更清爽。
3. 均值计算的变量用错了
就算代码能走到均值计算那一步,你写的mean = i / len(p)也是错的——i是循环的次数(等于列表长度),这样算出来永远是1,正确的应该是用累加的total除以列表长度。
修正后的代码(两种写法供参考)
写法1:直接遍历元素(推荐,更简洁)
def list_mean(p): total = 0 # 直接遍历列表里的每个元素累加 for num in p: total += num # 处理空列表的边界情况(避免除以0) if len(p) == 0: return 0 # 或者根据需求抛出异常 # 用总和除以长度得到均值 return total / len(p) print(list_mean([1,2,3,4])) # 输出2.5 print(list_mean([1,3,4,5,2])) # 输出3.0 print(list_mean([2])) # 输出2.0
写法2:用索引遍历(适合练习索引操作)
def list_mean(p): total = 0 list_length = len(p) # 用range生成索引,遍历每个位置的元素 for i in range(list_length): total += p[i] if list_length == 0: return 0 return total / list_length
这样修改后,就能得到你预期的均值结果啦~
内容的提问来源于stack exchange,提问作者sim
相关产品推荐
相关产品推荐

