You need to enable JavaScript to run this app. Python用for循环与列表推导式追加列表元素后者返回None是什么原因?
优惠活动
大模型
产品
解决方案
定价
更多

Python用for循环与列表推导式追加列表元素后者返回None是什么原因?

问题原因

list.append() 是原地修改列表的方法,本身没有返回值,执行完成后默认返回None,这是你得到全None列表的核心原因。

两种写法的逻辑差异:

  • 第一段for循环的逻辑是正确的:先初始化空列表x,每次循环调用x.append()往x中追加元素,最后打印x本身,得到的就是追加完成后的字符串列表。
  • 第二段列表推导式的用法完全不符合设计逻辑:列表推导式的作用是直接生成新列表,会把你写在推导式头部的表达式的计算结果,逐个收集为新列表的元素。你现在把x.append('hi'+str(i))放在推导式头部,相当于把每次append的返回值(也就是None)全部收集起来组成了新列表,还把这个全None的新列表直接赋值给了x,覆盖了原来的空列表,自然得不到你要的结果。

正确的列表推导式写法

你完全不需要在推导式里调用append,直接写要生成的元素内容即可:

x = ['hi' + str(i) for i in range(0, 10)]
# 也可以用f-string简化写法:x = [f'hi{i}' for i in range(10)]
print(x)

运行后就能得到和for循环版本完全一致的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 04:36:00