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

为何Python循环内print(output.append())与循环外print(output)结果不同?

为什么print(output.append(matric))会输出多个None?

核心原因:list.append()的返回值特性

Python里的list.append()方法是原地修改列表——它直接把元素添加到原列表末尾,但这个方法本身不会返回修改后的列表,也不会返回任何有效数据,默认返回None。

当你在循环里写print(output.append(matric))时,print()打印的不是添加后的列表,而是append()方法的返回值,也就是None。循环执行多少次,就会输出多少个None。

修正写法的逻辑

把output.append(matric)单独放在循环内时,这行代码只负责执行添加元素的操作,没有多余的返回值需要打印。等循环结束,output已经收集了所有满足i+j+k≠n的坐标,这时候执行print(output),打印的是整个列表的内容,自然能得到正确结果。

更简洁的写法(符合你学习列表推导式的需求)

既然你在学列表推导式,完全可以用一行代码完成需求,避免循环里的操作失误:

x, y, z, n = 2, 2, 2, 3
output = [[i, j, k] for i in range(x+1) for j in range(y+1) for k in range(z+1) if i+j+k != n]
print(output)

这种写法直接生成符合条件的坐标列表,代码更简洁,也不容易出现返回值相关的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:17:04