协慌网

登录 贡献 社区

如何在不修改任何一个的情况下在 Python 中获得两个列表的串联?

在 Python 中,我可以找到的将两个列表连接起来的唯一方法是list.extend ,它修改了第一个列表。是否有任何串联函数返回其结果而不修改其参数?

答案

是: list1 + list2 。这给出了一个新列表,该列表是list1list2的串联。

最简单的方法就是使用+运算符,该运算符返回列表的串联:

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)创建完整列表,但这将在内存中创建一个新列表。

concatenated_list = list_1 + list_2