iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python内置模块Collections如何使用
  • 185
分享到

Python内置模块Collections如何使用

2023-06-29 14:06:34 185人浏览 安东尼

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

摘要

本篇内容主要讲解“python内置模块Collections如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python内置模块Collections如何使用”吧!1、模块说明collec

本篇内容主要讲解“python内置模块Collections如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Python内置模块Collections如何使用”吧!

1、模块说明

collections 是 Python 的一个内置模块,所谓内置模块的意思是指 Python 内部封装好的模块,无需安装即可直接使用。

  • collections 包含了一些特殊的容器,针对 Python 内置的容器,例如: list、dict、set、tuple,提供了另一种选择。

  • namedtuple: 可以创建包含名称的 tuple。

  • deque: 类似于 list 的容器,可以快速的在队列头部和尾部添加、删除元素。

  • OrderedDict: dict的子类,可以记住元素的添加顺序。

  • defaultdict: dict的子类,可以调用提供默认值的函数。

  • Counter: dict的子类,计算可hash的对象。

2、 实战代码

(1) testNamedTuple函数

Python 提供了很多非常好用的基本类型,比如不可变类型 tuple,我们可以轻松地用它来表示一个二元向量。

namedtuple 是一个函数,它用来创建一个自定义的 tuple 对象,并且规定了 tuple 元素的个数,并可以用属性而不是索引来引用 tuple 的某个元素。

如此一来,我们用 namedtuple 可以很方便地定义一种数据类型,它具备 tuple 的不变性,又可以根据属性来引用,使用十分方便。

本示例中我们使用了一个三维坐标 x,y,z 来定义一个 tuple 对象,对象元素有3个,然后通过坐标值来引用相应的值即可。

from collections import namedtuplefrom collections import dequefrom collections import defaultdictfrom collections import OrderedDictfrom collections import Counterdef testNamedTuple():    vector=namedtuple('vector',['x','y','z'])    flag=vector(3,4,5)    print(type(flag))    print(isinstance(flag,vector))    print(isinstance(flag,tuple)) #通过这里的判定我们就可以知晓它是元组类型    print(flag.x,flag.y,flag.z)

(2) testDeque函数

deque是栈和队列的一种广义实现,deque是 "double-end queue" 的简称。

deque支持线程安全、有效内存地以近似O(1)的性能在 deque 的两端插入和删除元素,尽管 list 也支持相似的操作,但是它主要在固定长度操作上的优化,从而在 pop(0) 和 insert(0,v)(会改变数据的位置和大小)上有O(n)的时间复杂度。

数据结构中,我们知道队列和堆栈是两个非常重要的数据类型,一个先进先出,一个后进先出。

在 python 中,使用 list 存储数据时,按索引访问元素很快,但是插入和删除元素就很慢,因为 list 是线性存储,数据量大的时候,插入和删除效率很低。

deque是为了高效实现插入和删除操作的双向链表结构,非常适合实现队列和堆栈这样的数据结构。

def testDeque():    list1=[x*x for x in range(101)]    delist=deque(list1) #对列表进行了一次再处理,让list1列表变成了双向链表结构    delist.append(1000)#将x添加到deque的右侧    delist.appendleft(2000)#将x添加到deque的左侧    delist.pop(1000)#移除和返回deque中最右侧的元素,如果没有元素,将会报出IndexError;    delist.popleft()#移除和返回deque中最左侧的元素,如果没有元素,将会报出IndexError;    delist.count(1)#返回deque中元素等于1的个数    delist.remove(10000)#移除第一次出现的value,如果没有找到,报出ValueError;    delist.reverse()#反转deque中的元素,并返回None;    list2=[1,3,4,5]    delist.extend(list2)#将可迭代变量iterable中的元素添加至deque的右侧    delist.extendleft(list2)#将变量iterable中的元素添加至deque的左侧,往左侧添加序列的顺序与可迭代变量iterable中的元素相反    delist.maxlen()#只读的属性,deque的最大长度,如果无解,就返回None    delist.rotate(1)#从右侧反转n步,如果n为负数,则从左侧反转    delist.clear()#将deque中的元素全部删除,最后长度为0;

(3)testDefaultdict函数

defaultdict是内置数据类型 dict 的一个子类,基本功能与 dict 一样,只是重写了一个方法__missing__(key)和增加了一个可写的对象变量 default_factory。

使用 dict 字典类型时,如果引用的 key 不存在,就会抛出 KeyError。如果希望 Key 不存在时,返回一个默认值,就可以用 defaultdict。

def testDefaultdict():    dict1= defaultdict(lambda: 'default') #Key不存在时,返回一个默认值,就可以用default,defaultdict的其他行为跟dict是完全一样的    dict1["k1"]="v1"    print(dict1["k2"])    list2= [('yellow',11),('blue',2),('yellow',3),('blue',4),('red',5),('red',10)]    dict1 = defaultdict(list)#使用list作为default_factory,很容易将一个key-value的序列转换为一个关于list的词典    for k,v in list2:        dict1[k].append(v)    print(dict1)

(4) testOrderedDict函数

OrderedDict类似于正常的词典,只是它记住了元素插入的顺序,当在有序的词典上迭代时,返回的元素就是它们第一次添加的顺序。这样 dict 就是一个有序的字典。

使用 dict 时,key 是无序的。在对 dict 做迭代时,我们无法确定 key 的顺序。但是如果想要保持 key 的顺序,可以用 OrderedDict。

def testOrderedDict():    dict1=dict([('aaa', 111), ('DDD',444),('bbb', 222), ('ccc', 333)])    print(dict1)    dict2 = OrderedDict([('ddd',444),('aaa', 111), ('bbb', 222), ('ccc', 333)])#OrderedDict的key会按照插入的顺序排列,不是key本身排序    print(dict2)    dict3 = {"banana": 33, "apple": 222, "pear": 1, "orange": 4444}    # dict sorted by key    dict4=OrderedDict(sorted(dict3.items(), key=lambda t: t[0]))    print("dict4",dict4)    # dict sorted by value    dict5=OrderedDict(sorted(dict3.items(), key=lambda t: t[1]))    print("dict5",dict5)    # dict sorted by length of key string    dict6 = OrderedDict(sorted(dict3.items(), key=lambda t: len(t[0])))    print("dict6",dict6)    print(dict6['apple'])

(5) testCounter函数

def testCounter():    '''counter可以支持方便、快速的计数'''    str1="abcdefgabcedergeghdjlkabcdefe" #将可迭代的字符串初始化counter    str2=Counter(str1)    print(str2) #从输出的内容来看,Counter实际上也是dict的一个子类    for k,v in str2.items():        print(k,v)    dict3 = {"banana": 33, "apple": 222, "pear": 1, "orange": 4444,"apples":2}#将dict初始化counter    dict4=Counter(dict3)    print(dict4)    print(dict4["test"])#Counter对象类似于字典,如果某个项缺失,会返回0,而不是报出KeyError;    dict5=Counter(high=9,age=33,money=-1)#将args初始化counter    print(dict5)    #elements返回一个迭代器,每个元素重复的次数为它的数目,顺序是任意的顺序,如果一个元素的数目少于1,那么elements()就会忽略它;    list1=list(dict5.elements())    print(list1)    #most_common返回一个列表,包含counter中n个最大数目的元素    #,如果忽略n或者为None,most_common()将会返回counter中的所有元素,元素有着相同数目的将会以任意顺序排列;    str1 = "abcdefgabcedergeghdjlkabcdefe"    list1=Counter(str1).most_common(3)    print(list1)if __name__ == '__main__':    # testNamedTuple()    # testCounter()    testDefaultdict()    # testDeque()    # testOrderedDict()

到此,相信大家对“Python内置模块Collections如何使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Python内置模块Collections如何使用

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python内置模块Collections如何使用
    本篇内容主要讲解“Python内置模块Collections如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python内置模块Collections如何使用”吧!1、模块说明collec...
    99+
    2023-06-29
  • Python中 Collections 模块如何使用
    今天就跟大家聊聊有关Python中 Collections 模块如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。collections模块是一个不用不知道,一用就上瘾的模块。这...
    99+
    2023-06-15
  • Python的一个内置模块Collections怎么使用
    这篇文章主要讲解了“Python的一个内置模块Collections怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的一个内置模块Collections怎么使用”吧!1、模...
    99+
    2023-07-06
  • Python内置模块Collections的使用教程详解
    目录1、模块说明2、 实战代码(1) testNamedTuple函数(2) testDeque函数(3)testDefaultdict函数(4) testOrderedDict函数...
    99+
    2024-04-02
  • collections模块如何在Python中使用
    这期内容当中小编将会给大家带来有关collections模块如何在Python中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据...
    99+
    2023-06-14
  • 聊聊Python的一个内置模块Collections
    1、模块说明collections 是 Python 的一个内置模块,所谓内置模块的意思是指 Python 内部封装好的模块,无需安装即可直接使用。collections 包含了一些特殊的容器,针对 Python 内置的容器,例如:list...
    99+
    2023-05-14
    Python 函数 内置模块
  • 如何在Python项目中使用collections模块
    这篇文章主要介绍了如何在Python项目中使用collections模块,编程网小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随编程网小编来看看吧!Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;...
    99+
    2023-06-06
  • 怎么使用Python内置库collections
    这篇文章主要讲解了“怎么使用Python内置库collections”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python内置库collections”吧!Python中有很多好...
    99+
    2023-06-02
  • python如何内置csv模块
    这篇文章主要介绍“python如何内置csv模块”,在日常操作中,相信很多人在python如何内置csv模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python如何内置csv模块”的疑惑有所帮助!接下来...
    99+
    2023-06-25
  • python 内置模块
    一.random模块  随机        random()    随机小数             uninform(a,b) 随机小数 randint(a,b)  随机整数 choice() 随机选择一个 sample() 随机选择...
    99+
    2023-01-30
    模块 python
  • python非内置模块如何导入
    要导入非内置模块,可以使用`import`语句。例如,如果要导入名为`mymodule`的模块,可以使用以下代码:```python...
    99+
    2023-08-29
    python
  • python 内置模块collectio
    1、namedtuple from collections import namedtuple websites = [('Sohu', 'http://www.google.com/', u'张朝阳'),('Sina', 'http://...
    99+
    2023-01-31
    模块 python collectio
  • python内置模块~shutil
    --High-level file operations,高级的文件操作模块~shutil 模块的使用主要包括对文件及目录的移动、复制、打包、压缩(解压)、删除等操作。是对os模块的一个补充~ shutil.copyfileobj(fs...
    99+
    2023-01-31
    模块 python shutil
  • python如何使用import模块
    这篇文章给大家分享的是有关python如何使用import模块的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。import模块在Python经常使用import声明,以使用其他模块...
    99+
    2024-04-02
  • Python pluggy模块如何使用
    本篇内容介绍了“Python pluggy模块如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 pluggy 简介plug...
    99+
    2023-06-30
  • Python decimal模块如何使用
    这篇文章主要介绍“Python decimal模块如何使用”,在日常操作中,相信很多人在Python decimal模块如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python&...
    99+
    2023-07-05
  • 如何使用python xml模块
    本篇内容主要讲解“如何使用python xml模块”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用python xml模块”吧!一、xml简介xml是实现不同语言或程序之间进行数据交换的协...
    99+
    2023-06-07
  • python如何使用itertools模块
    这篇文章主要为大家展示了“python如何使用itertools模块”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何使用itertools模块”这篇文章吧。高效的itertools...
    99+
    2023-06-27
  • Python async模块如何使用
    这篇文章主要介绍“Python async模块如何使用”,在日常操作中,相信很多人在Python async模块如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python ...
    99+
    2023-07-05
  • python如何使用timeit模块
    这篇文章给大家分享的是有关python如何使用timeit模块的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。timeit模块timeit 模块提供了测量 Python 小段代码执行时间的方法,可以在命令行界面直接...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作