Python 中合并列表是非常常见的操作,本文提供6种方法实现列表的拼接:

通过 + 运算直接拼接

通过循环调用list.append()进行拼接

通过列表表达式拼接

通过 ‘*’ 解构方式实现拼接

通过内置的extend方法实现拼接

通过itertools.chain()实现拼接

下面对每种方法进行说明。

1. 通过 + 运算直接拼接
1
2
3
4
5
6
7
8
9# 初始化列表
list1 = [0, 1, 2]
list2 = [3,4, 5,]
list3 = [6, 7, 8, 9]
# 1. 通过 + 运算直接拼接
print('# 1. 通过 + 运算直接拼接')
result = list1 + list2 + list3
print(result)
控制台输出
1
2# 1. 通过 + 运算直接拼接
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2. 通过循环调用list.append()拼接
1
2
3
4
5
6
7
8
9print('# 2. 通过循环调用list.append()拼接')
result = []
for element in list1:
result.append(element)
for element in list2:
result.append(element)
print(result)
控制台输出
1
2# 2. 通过循环调用list.append()拼接
[0, 1, 2, 3, 4, 5]
3. 通过列表表达式拼接
1
2
3
4print('# 3. 通过列表表达式拼接')
result = [element for lis in [list1, list2 , list3] for element in lis]
print(result)
控制台输出
1
2# 3. 通过列表表达式拼接
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4. 通过 ‘*’ 解构方式实现拼接
1
2
3
4
5print('4. 通过 '*' 解构方式实现拼接')
result = [*list1, *list2]
print(result)
控制台输出
1
2# 4. 通过 '*' 解构方式实现拼接
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
5. 通过内置的extend方法实现拼接
1
2
3
4
5
6
7print('# 5.通过内置的extend方法实现拼接')
result = []
result.extend(list1) # list_one contains all the elements
result.extend(list2)
result.extend(list3)
print(result)
控制台输出
1
2# 4. 通过 '*' 解构方式实现拼接
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
6. 通过itertools.chain()实现拼接
1
2
3
4
5print('# 6. 通过itertools.chain()实现拼接')
import itertools
result = list(itertools.chain(list2, list2, list3))
print(result)
控制台输出
1
2# 6. 通过itertools.chain()实现拼接'
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

小结

以上六种方法各有优劣,从效率角度看,直接使用操作符’+’和‘*’的方式效率最好,但此种方式不适合做大数据处理。如果需要做一定列表元素处理,然后再合并,可以采用2、3两种方式。如果数据量很大,都存在外部存储器或数据库里,采用6的方式更加合适。 如果需要修改原始列表,则可以使用5中的extend方式。