返回顶部
首页 > 资讯 > 后端开发 > Python >python 合并列表的八种方法
  • 484
分享到

python 合并列表的八种方法

2024-04-02 19:04:59 484人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 最直观的相加 2. 借助 itertools 3. 使用 * 解包4. 使用 extend 5. 使用列表推导式 6. 使用 heapq 7. 借助魔法方法 8. 使用 y

python 语言里有许多(而且是越来越多)的高级特性,是 Python 发烧友们非常喜欢的。在这些人的眼里,能够写出那些一般开发者看不懂的高级特性,就是高手,就是大神。

但你要知道,在团队合作里,炫技是大忌。

为什么这么说呢?我说下自己的看法:

  1. 越简洁的代码,越清晰的逻辑,就越不容易出错;
  2. 在团队合作中,你的代码不只有你在维护,降低别人的阅读/理解代码逻辑的成本是一个良好的品德
  3. 简单的代码,只会用到最基本的语法糖,复杂的高级特性,会有更多的依赖(如语言的版本)

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. 借助 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]
>>>

3. 使用 * 解包

使用 * 可以解包列表。 *  和 ** 常用在函数定义时,设置可变参数。

现在我将它单独拿出来用在多个列表的合并。

示例如下:


>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>>
>>> [*list01, *list02]
[1, 2, 3, 4, 5, 6]
>>>

4. 使用 extend

在字典中,使用 update 可实现原地更新,而在列表中,使用 extend 可实现列表的自我扩展。


>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>>
>>> list01.extend(list02)
>>> list01
[1, 2, 3, 4, 5, 6]

5. 使用列表推导式

Python 里对于生成列表、集合、字典,有一套非常 Pythonnic 的写法。

那就是列表解析式,集合解析式和字典解析式,通常是 Python 发烧友的最爱,那么今天的主题:列表合并,列表推导式还能否胜任呢?

当然可以,具体示例代码如下:


>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>>
>>> [x for l in (list01, list02, list03) for x in l]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

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 除了合并多个列表外,它还会将合并后的最终的列表进行排序。


>>> list01 = [2,5,3]
>>> list02 = [1,4,6]
>>> list03 = [7,9,8]
>>> 
>>> from heapq import merge
>>> 
>>> list(merge(list01, list02, list03))
[1, 2, 4, 5, 3, 6, 7, 9, 8]
>>> 

它的效果等价于下面这行代码:


sorted(itertools.chain(*iterables))

如果你希望得到一个始终有序的列表,那请第一时间想到 heapq.merge,因为它采用堆排序,效率非常高。但若你不希望得到一个排过序的列表,就不要使用它了。

7. 借助魔法方法

利用魔法方法 __add__,实际 上当我们使用第一种方法 list01 + list02 的时候,内部实际上是作用在 __add__ 这个魔法方法上的.

所以以下两种方法其实是等价的


>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> 
>>> list01 + list02
[1, 2, 3, 4, 5, 6]
>>> 
>>> 
>>> list01.__add__(list02)
[1, 2, 3, 4, 5, 6]
>>> 

借用这个魔法特性,我们可以 reduce 这个方法来对多个列表进行合并,示例代码如下


>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>>
>>> from functools import reduce
>>> reduce(list.__add__, (list01, list02, list03))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

8. 使用 yield from

yield from 后可接一个可迭代对象,用于迭代并返回其中的每一个元素。

因此,我们可以像下面这样自定义一个合并列表的工具函数。


>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>>
>>> def merge(*lists):
...   for l in lists:
...     yield from l
...
>>> list(merge(list01, list02, list03))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

看到这里,有没有涨姿势了,学了这么久的 Python ,没想到合并列表还有这么多的方法。本篇文章的主旨,并不在于让你全部掌握这 7 种合并列表的方法,实际上,你只要选用一种最顺手的方式即可。

但是在协同工作中,或者在阅读他人代码时,你不可避免地会碰到各式各样的写法,这时候你能下意识的知道这是在做合并列表的操作,那这篇文章就是有意义的。

以上就是python 连接列表的八种方法的详细内容,更多关于python 连接列表的资料请关注编程网其它相关文章!

--结束END--

本文标题: python 合并列表的八种方法

本文链接: https://lsjlt.com/news/122318.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python 合并列表的八种方法
    目录1. 最直观的相加 2. 借助 itertools 3. 使用 * 解包4. 使用 extend 5. 使用列表推导式 6. 使用 heapq 7. 借助魔法方法 8. 使用 y...
    99+
    2024-04-02
  • Python3 列表list合并的4种方法
    下面是列表合并的4种方法,其中的代码都在Python3下测试通过,在Python2下运行应该也没问题,时间关系就没测试,遇到问题可以联系小编 方法1: 直接使用"+"号合并列表 ...
    99+
    2024-04-02
  • python中合并两个列表的方法
    这篇文章主要介绍了python中合并两个列表的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python合并两个列表的方法:1、分别从两个列表中取出所有的元素,再放入新列...
    99+
    2023-06-14
  • 合并Python列表的方法有哪些
    本篇内容介绍了“合并Python列表的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我喜欢12这个数字,因为有太多的事情与12有关...
    99+
    2023-06-15
  • Python编程技巧连接列表的八种操作方法
    目录1. 最直观的相加2. 借助 itertools3. 使用 * 解包4. 使用 extend5. 使用列表推导式6. 使用 heapq8. 使用 yield fromPython...
    99+
    2024-04-02
  • python合并列表并排序的方法是什么
    Python中合并列表并排序的方法有多种,下面列举了几种常见的方法: 使用"+"运算符合并列表,并使用sort...
    99+
    2024-02-29
    python
  • Python中的字典合并与列表合并技巧
    目录前言1 合并字典2 合并列表前言 又到了每日分享Python小技巧的时候了,今天给大家分享的是Python中两种常见的数据类型合并方法。 1 合并字典 在某些场景下,我们需要对两...
    99+
    2024-04-02
  • python合并ts视频(三种方法)
    前言:最近在爬取某个网站的视频,但是里面的视频数据是以ts文件的形式给出的。一个大的视频被切分成了很多小的ts视频,所以,合并这些ts视频就成为必要的了。我在网上搜到了三种方法,现在整理出来分享给大家,同时方便自己以后作参考。 方法一:用...
    99+
    2023-09-04
    python 音视频 开发语言
  • Python中五种列表拷贝的方法
    目录1. 赋值操作2. 使用copy操作3. 使用list()构造函数4. 使用索引5. 列表生成式6 总结1. 赋值操作 最容易想到的就是我们可以使用赋值操作来直接复制列表, 代码...
    99+
    2024-04-02
  • Python|合并两个字典的8种方法
    在Python中,有多种方法可以通过使用各种函数和构造函数来合并字典。在本文中,我们将讨论一些合并字典的方法。 1. 使用方法update() 通过使用Python中的update()方法,可以将一个...
    99+
    2023-09-15
    python 开发语言
  • python怎么合并两个列表
    要将两个列表合并,可以使用 "+" 操作符或者 extend() 方法。使用 "+" 操作符:```pythonlist1 = [1...
    99+
    2023-09-20
    python
  • 分享几种python变量合并方法
    目录一、list 合并二、str 合并三、dict 合并一、list 合并 第一种方法: a =[91,95,97,99] b =[92,93,96,98] c = a+b  # 合...
    99+
    2024-04-02
  • python怎么合并列表中的元素
    可以使用`+`操作符将两个列表合并成一个新的列表。例如,假设有两个列表`list1`和`list2`,我们可以使用以下代码将它们合并...
    99+
    2023-09-06
    python
  • Python列表去重的几种方法整理
    请定义函数,将列表[10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]中的重复元素除去,写出至少3种方法。 方法一:利用集合去重 ...
    99+
    2024-04-02
  • python怎么合并两个列表并排序
    在Python中,可以使用`+`操作符来合并两个列表,并使用`sorted()`函数对合并后的列表进行排序。下面是一个示例代码:``...
    99+
    2023-08-15
    python
  • navicat合并表格的方法
    这篇文章主要介绍navicat合并表格的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  可应用操作系统:Windows、macOS、Linux  可应用 Navicat 产品:...
    99+
    2024-04-02
  • python数据表合并的方法有哪些
    这篇“python数据表合并的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“py...
    99+
    2024-04-02
  • python中如何合并两个列表
    本篇内容介绍了“python中如何合并两个列表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!合并方法:1、用“+”操作符合并,语法“list...
    99+
    2023-07-04
  • python如何将两个列表合并
    Python提供了多种方法可以将两个列表合并。以下是几种常见的合并方法: 使用"+"运算符: list1 = [1, 2, 3]...
    99+
    2023-10-24
    python
  • python多列数据合并成一列的方法是什么
    将多列数据合并成一列的方法有多种,以下是其中的几种常见方法:1. 使用pandas库的concat()函数:可以将多个列或...
    99+
    2023-09-27
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作