如何在Python中不修改任何一个列表来连接两个列表?

709 投票
7 回答
915189 浏览
提问于 2025-04-16 07:58

在Python中,我找到的唯一可以把两个列表合并的方法是用list.extend,这个方法会直接改变第一个列表。有没有什么合并的函数,可以返回一个新列表,而不改变原来的列表呢?

7 个回答

117

这行代码的意思是把两个列表(list_1 和 list_2)合并在一起,形成一个新的列表,叫做 concatenated_list。简单来说,就是把 list_1 里的所有东西和 list_2 里的所有东西都放到一起,变成一个新的大列表。

174

最简单的方法就是用 + 这个符号,它可以把两个列表合并在一起:

concat = first_list + second_list

不过,这种方法有个缺点,就是会使用两倍的内存。如果你的列表很大,且你对合并后的列表有特别的使用需求,itertools.chain 可能是个更好的选择:

>>> import itertools
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = itertools.chain(a, b)

这个方法会创建一个生成器,用于处理合并后的列表中的项目。这样就不需要再创建一个新的列表了,但你仍然可以像使用合并后的列表一样使用 c

>>> for i in c:
...     print i
1
2
3
4
5
6

如果你的列表很大,而且你很在意效率,那么这个方法和 itertools 模块里的其他方法都非常实用。

需要注意的是,这个例子会消耗掉 c 中的项目,所以在你想要再次使用它之前,需要重新初始化它。当然,你也可以直接用 list(c) 来创建一个完整的新列表,但那样会在内存中再创建一个新的列表。

1151

没错:list1 + list2。这个操作会生成一个新的列表,它是把list1list2合并在一起的结果。

撰写回答