如何在 Python 中连接两个列表?
例:
listone = [1, 2, 3]
listtwo = [4, 5, 6]
预期成果:
>>> 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 定义的,但尚未向后移植到 3.x 系列中的早期版本。在不受支持的版本中,将引发 。SyntaxError
与其他方法一样,这也会在相应列表中创建元素的浅拷贝。
这种方法的好处是你真的不需要列表来执行它;任何可迭代的东西都可以。如PEP所述:
这也是一种将可迭代对象求和到
列表中更易读的方法,例如现在
等效于 .my_list + list(my_tuple) + list(my_range)
[*my_list, *my_tuple, *my_range]
因此,虽然加法会由于类型不匹配而引发:+
TypeError
l = [1, 2, 3]
r = range(4, 7)
res = l + r
以下情况不会:
res = [*l, *r]
因为它将首先解压缩可迭代对象的内容,然后简单地从内容创建一个。list
网友回答:
使用运算符合并列表:+
listone = [1, 2, 3]
listtwo = [4, 5, 6]
joinedlist = listone + listtwo
输出:
>>> joinedlist
[1, 2, 3, 4, 5, 6]
网友回答:
也可以创建一个生成器,该生成器仅使用 .这允许您将列表(或任何可迭代对象)链接在一起进行处理,而无需将项目复制到新列表:itertools.chain()
import itertools
for item in itertools.chain(listone, listtwo):
# Do something with each list item
模板简介:该模板名称为【如何在 Python 中连接两个列表?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。