Python 如何拼接(合并)两个列表?

合并列表:+ 运算符创建新列表;extend() 就地追加;[*a, *b] 解包语法;itertools.chain 惰性拼接。本文给出四种方式与性能差异。

最佳实践
Python 如何拼接(合并)两个列表?封面

四种常用方式:a + b 生成新列表、a.extend(b) 就地追加、[*a, *b] 解包、itertools.chain(a, b) 惰性迭代——按需选择。

四种方式

a = [1, 2, 3]
b = [4, 5, 6]

# 1. + 运算符:新列表,原列表不变
c = a + b                # [1, 2, 3, 4, 5, 6]

# 2. extend:就地修改 a
a.extend(b)              # a 变成 [1, 2, 3, 4, 5, 6]

# 3. 解包(3.5+,可读性好)
c = [*a, *b]

# 4. itertools.chain:惰性,适合超大列表
import itertools
for x in itertools.chain(a, b): ...

怎么选

需求 方式
要新列表、保留原列表 + 或解包
就地追加省内存 extend
拼接很多列表 chain(避免中间拷贝)
列表推导场景 [x for lst in lists for x in lst]

常见问题(FAQ)

Q:append 和 extend 区别? append 把参数当单个元素加入(列表会嵌套);extend 把可迭代对象的元素逐个加入。

Q:+ 会改原列表吗? 不会,生成新对象。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台