如何在Python中连接两个列表?
2022-09-05 00:43:22
如何在Python中连接两个列表?
例:
listone = [1, 2, 3]
listtwo = [4, 5, 6]
预期成果:
>>> joinedlist
[1, 2, 3, 4, 5, 6]
如何在Python中连接两个列表?
例:
listone = [1, 2, 3]
listtwo = [4, 5, 6]
预期成果:
>>> joinedlist
[1, 2, 3, 4, 5, 6]
使用运算符合并列表:+
listone = [1, 2, 3]
listtwo = [4, 5, 6]
joinedlist = listone + listtwo
输出:
>>> joinedlist
[1, 2, 3, 4, 5, 6]
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.x
SyntaxError
与其他方法一样,这也创建了相应列表中元素的浅层副本。
这种方法的好处是,你真的不需要列表来执行它,任何可迭代的东西都可以。如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