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

Python中list的append与extend方法返回None的原因解析

为什么列表的append/extend方法返回None?

嘿,这是Python里非常常见的新手困惑,我来给你掰扯清楚~

首先得明白Python里列表的一个核心设计:像append、extend、sort、reverse这类方法,都是「原地修改」原列表,它们的作用是直接改变你调用它们的那个列表对象,而不是创建一个新的列表返回给你。为了明确告诉你“我没返回新东西,只是改了原列表”,这些方法的返回值就设成了None。

那回到你的代码,我们逐行拆解:

def main(): 
    x = ['a','b','c','d','e'] 
    y = ['v','w','x','y','z'] 
    z1 = x.append(y) 
    z2 = x.extend(y) 
    print(z1) 
    print(z2) 
main()
  • x.append(y):这行代码会把整个y列表作为一个单独元素,添加到x的末尾——x本身已经被修改了,但append方法不会把修改后的x返回给你,所以z1拿到的就是None。
  • x.extend(y):这行是把y里的每个元素逐个加到x的末尾,同样x被修改了,但extend也返回None,所以z2也是None。

那怎么拿到修改后的列表呢?分两种情况处理:

1. 允许修改原列表

直接用修改后的原列表就行,因为它已经是你想要的结果了:

def main(): 
    x = ['a','b','c','d','e'] 
    y = ['v','w','x','y','z'] 
    x.append(y) 
    print(x)  # 这里打印的就是append后的x
    x.extend(y) 
    print(x)  # 这里是extend后的x
main()

2. 不想修改原列表,要新的列表

那你得先复制原列表,再对复制后的列表操作:

def main(): 
    x = ['a','b','c','d','e'] 
    y = ['v','w','x','y','z'] 
    # 复制x,生成新列表
    z1 = x.copy()
    z1.append(y)
    print(z1)  # 输出 ['a','b','c','d','e', ['v','w','x','y','z']]
    
    z2 = x.copy()
    z2.extend(y)
    print(z2)  # 输出 ['a','b','c','d','e', 'v','w','x','y','z']
main()

总结一下:Python里的原地修改类列表方法都返回None,要获取修改后的列表,要么直接用被修改的原列表,要么先复制再操作~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:46:13