当前位置: 首页 > article >正文

[Python]连接列表,将多个列表连接起来

2.7 连接列表

2.7.1 使用“+”

使用 + 对多个列表进行相加。
>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>> list01 + list02 + list03

[1, 2, 3, 4, 5, 6, 7, 8, 9]

2.7.2 使用 extend

这是列表自带的一个方法,通过该方法可以实现列表的原地更新。
>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list01.extend(list02)
>>> list01

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

2.7.3 使用列表推导式

列表推导式可谓是Python中的一大利器,对于生成列表、集合、字典都非常好用且高效。当然,使用列表推导式也能轻松连接列表:
>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>> [x for lst in (list01, list02, list03) for x in lst]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

2.7.4 使用“*”解包

在之前的Python基础可迭代对象章节中讲到了解包,在函数中也可以通过解包的方式将可迭代对象中的元素全部取出作为参数传入函数中。
通过解包的方式,同样可以合并多个列表:
>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>> [*list01, *list02, *list03]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

2.7.5 借助 itertools

itertools 在 Python里有一个非常强大的内置模块,它专门用于操作可迭代对象。使用 itertools.chain() 函数可以将可迭代对象(在这里指的是列表)串联起来,组成一个更大的可迭代对象。最后再利用 list 将其转化为列表即可。
>>> from functools import chain
>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>> list(chain(list01, list02, list03))

[1, 2, 3, 4, 5, 6, 7, 8, 9]

2.7.6 使用 heapq#

heapq 是 Python的一个标准模块,它提供了堆排序算法的实现。该模块里有一个 merge 方法,可以用于合并多个列表,如下所示
>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>> from heapq import merge
>>> list(merge(list01, list02, list03))

[1, 2, 3, 4, 5, 6, 7, 8, 9]

注意:heapq.merge 除了合并多个列表外,它还会将合并后的最终的列表进行排序。
如果希望得到一个有序的列表,可以使用 heapq.merge,因为它采用堆排序,效率高。


http://www.kler.cn/a/18353.html

相关文章:

  • OpenEuler 下 Docker 安装、配置与测试实例
  • 【C/C++】CreateThread 与 _beginthreadex, 应该使用哪一个?为什么?
  • 由于找不到mfc120u.dll, 无法继续执行代码。重新安装程序可能解决引问题。
  • Lodash的常用方法整理
  • C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
  • 探索 Java 23:新时代的编程利器
  • d答复引用等问题
  • 【蓝桥杯选拔赛真题56】Scratch画笔涂色 少儿编程scratch图形化编程 蓝桥杯选拔赛真题讲解
  • OJ练习第101题——柱状图中最大的矩形
  • 数据结构之栈的详解
  • ASP.NET Core Web API用户身份验证
  • 鸿蒙Hi3861学习七-Huawei LiteOS-M(信号量)
  • Linux网络架构: XDP, iptables/netfilter和iproute2/tc/ip/Qdiscs
  • windows环境安装运行kafka
  • Java EE--多线程(二)
  • Linux命令·netstat
  • electron +VUE 获取本地MAC地址
  • 又一起数据泄露事件五个月内的第二次
  • OpenPCDet系列 | 7.PointPillars模型测试KITTI数据集流程解析
  • 文件压缩与解压性能对比 lzop, gzip
  • CentOS 7 常用的命令,你知道多少?
  • 5.9-5.10学习总结
  • PDN Handover流程介绍
  • Java RSA密钥转换,从RSAPrivateKey得到RSAPublicKey
  • HTML5字体集合的实践经验
  • ( 位运算 ) 268. 丢失的数字 ——【Leetcode每日一题】