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

Python中打印列表extend操作赋值结果为None的原因

问题原因

打印变量val得到None的核心原因是:Python列表的extend()是原地修改方法,这类方法不会返回修改后的对象,默认返回值就是None。

代码执行逻辑拆解

逐行运行对应代码时,变量变化过程如下:

  • 初始状态:nums = [1,2,3,4,5],k=3,lst = []
  • 3次循环执行完成后:
    • 每次弹出nums尾部元素追加到lst,最终lst = [5,4,3]
    • 弹出3个尾部元素后,剩余nums = [1,2]
  • 执行val = lst.extend(nums)时:
    • extend()会直接把nums里的所有元素追加到lst尾部,执行完这行后lst本身已经变成[5,4,3,1,2]
    • 但该方法没有设计返回值,所以赋值给val的内容就是Python无返回值方法默认的None,这就是打印val得到None的直接原因。

修正方案

不需要接收extend()的返回值,直接调用方法修改原列表后,打印列表本身即可:

nums=[1,2,3,4,5]
k=3
lst = []
for i in range (1, k+1):
    lst.append(nums[-1])
    nums.pop(-1)
lst.extend(nums) # 原地修改lst,不做赋值
print("lst= ", lst)

运行后会输出正确结果:lst= [5, 4, 3, 1, 2]

补充说明:Python中所有列表原地操作方法都默认返回None,常见的包括append()、sort()、reverse()、remove(),使用这类方法时不要尝试用变量接收返回值,直接操作原列表即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:09:16