如何在Python中连接两个列表?

2022-09-05 00:43:22

如何在Python中连接两个列表?

例:

listone = [1, 2, 3]
listtwo = [4, 5, 6]

预期成果:

>>> joinedlist
[1, 2, 3, 4, 5, 6]

答案 1

使用运算符合并列表:+

listone = [1, 2, 3]
listtwo = [4, 5, 6]

joinedlist = listone + listtwo

输出:

>>> joinedlist
[1, 2, 3, 4, 5, 6]

答案 2

Python >= 3.5 替代: [*l1, *l2]

通过接受PEP 448引入了另一种值得一提的替代方案。

PEP,标题为“附加解包泛化”,在Python中使用带星标的表达式时,通常会减少一些语法限制;有了它,连接两个列表(适用于任何可迭代的)现在也可以通过以下方式完成:*

>>> l1 = [1, 2, 3]
>>> l2 = [4, 5, 6]
>>> joined_list = [*l1, *l2]  # unpack both iterables in a list literal
>>> print(joined_list)
[1, 2, 3, 4, 5, 6]

此功能是为Python 3.5定义的,它尚未向后移植到该系列中的先前版本。在不受支持的版本中,将引发 a。3.xSyntaxError

与其他方法一样,这也创建了相应列表中元素的浅层副本


这种方法的好处是,你真的不需要列表来执行它,任何可迭代的东西都可以。如PEP中所述:

作为将可迭代对象汇总到列表中的更具可读性的方法,这也很有用,例如现在等效于 。my_list + list(my_tuple) + list(my_range)[*my_list, *my_tuple, *my_range]

因此,虽然添加 with 会由于类型不匹配而引发:+TypeError

l = [1, 2, 3]
r = range(4, 7)
res = l + r

以下情况不会:

res = [*l, *r]

因为它将首先解压缩可迭代对象的内容,然后简单地从内容中创建一个。list