如何在Python中不修改任何一个列表来连接两个列表?
在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
。这个操作会生成一个新的列表,它是把list1
和list2
合并在一起的结果。