一、模块的认识

  定义:模块就是我们把装有特定功能的代码进行归类的结果。

  说明:从代码编写的单位来看我们的城西,从小到大:一条代码 -> 语句块 - >代码块(函数、类)-> 模块。

  模块引入的方法:

    1、import 模块

    2、from xxx import 模块

二、collections模块

  collectionz模块中主要封装了一些关于集合类的相关操作,比如之前学过的Iterable,Iterator等等,今日主要记录的是Couter,deque,OrderDict,defaultdict,defaultdict以及namedtuple.

 (1)Couter

  Couter时一个计数器,主要用于计数.

# 计算字符串中每个元素出现的次数
# 普通方法
str="alex like pig"
dic={}
for el in str:
dic[el]=dic.setdefault(el,)+
print(dic)
# 借用collections模块中 的Counter(计数器)
str="alex like pig"
import collections
print(collections.Counter(str)) from collections import Counter
c=Counter(str)
print(Counter(c)) # 获取到的结果可以像字典⼀样进⾏使⽤ [key]

  (2)deque 双向队列

    1. 栈: FILO. 先进后出 -> 砌墙的砖头, 老师傅做馒头    

# 栈 track (先进后出)
class TrackFullError(Exception):
pass
class TrackEmptyError(Exception):
pass
class Track:
def __init__(self,size):
self.index=0
self.lst=[]
self.size=size def push(self,item):
'''
入栈
:param item: 入栈元素
:return:
'''
if self.index>4:
raise TrackFullError("Track is Full")
self.lst.insert(self.index,item)
self.index+=1
print(self.lst)
def pop(self):
'''
出栈
:return:
'''
self.index-=1
if self.index<0:
raise TrackEmptyError("Track is Empty")
item=self.lst.pop(self.index)
print(item)

    2. 队列: FIFO. 先进先出 -> 买火⻋票排队, 所有排队的场景

        注意. 如果队列⾥没有元素了. 再也就拿不出来元素了. 此时程序会阻塞

#队列queue (先进先出)
import queue
# 创建队列对象
q=queue.Queue()
q.put("赵")
q.put("钱")
q.put("孙")
q.put("李") print(q.get()) #赵
print(q.get()) #钱
print(q.get())  #孙
print(q.get())  #李
# print(q.get()) 队列里面没有元素,会等待,不报错

  双向队列 :deque

  说明:既能从左进,也能从右进;既能从左边出也能从右边出。

from collections import deque

c=deque()
c.append("风") #从右侧开始添加
c.append("雨")
c.appendleft("电") #从左侧开始添加
c.appendleft("雷") print(c) #deque(['雷', '电', '风', '雨'])
print(c.pop()) #从右侧开始弹出
print(c.pop())
print(c.popleft())
print(c.popleft())#从左侧开始弹出
print(c.popleft()) #IndexError: pop from an empty deque

  (3)命名元组 namedtuple

    命名元组:本质就是一个元组,命名元祖可以进行解包。

# # 命名元祖 namedtuple 终归是一个元祖,不能更改
from collections import namedtuple
point=namedtuple("点",["x","y"])
p=point(5,10)
print(p)
print(p.x)
print(p.y)
# p.x=10 #can't set attribute
# p.z=16 #AttributeError: '点' object has no attribute 'z'

  (4)defaultdict  字典默认值

    默认值 defaultdict执行流程:
      1、defaultdict中必须是一个可以被调用的对象;
      2、如果存在key,返回相应的value,如果不存在则执行可调用对象,并吧结果返回

from collections import defaultdict
# d=defaultdict(list)
# print(d["华辣汤"])#当defaultdict中不存在"华辣汤",则执行了list( )

   (5)orderdict和defaultdict

       orderdict 顾名思义. 字典的key默认是⽆序的. ⽽OrderedDict是有序的 ,但是从python3.6以后的版本

  ,我们看到的字典都是有序的。

python collection模块的更多相关文章

  1. Python collection模块与深浅拷贝

    collection模块是对Python的通用内置容器:字典.列表.元组和集合的扩展,它包含一些专业的容器数据类型: Counter(计数器):dict子类,用于计算可哈希性对象的个数. Ordere ...

  2. Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型)

    Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型) 一丶软件开发规范 六个目录: #### 对某 ...

  3. python双端队列-collection模块

    双端队列(double-ended queue,或者称deque)在需要按照元素增加的顺序来移除元素时非常有用.其中collection模块,包括deque类型. 使用实例:

  4. day0320 时间模块 collection模块

    一. TIME模块 python提供了一个time和calendar模块可以用于格式化日期和时间. 时间间隔一秒为单位. 每个时间戳都以1970年1月1日午夜经过多长时间来表示. 1.时间戳 函数ti ...

  5. what's the python之模块

    正则表达式 首先,我们引入了正则表达式的知识.所谓正则表达式,就是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对 ...

  6. day 20 collection模块 time 模块 os 模块

    一.collection模块 1.namedtuple: 生成可以使用名字来访问元素内容的tuple 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象 3.Counter: 计数器,主要 ...

  7. python 之模块之 xml.dom.minidom解析xml

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...

  8. Python标准模块--threading

    1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...

  9. Python的模块引用和查找路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...

随机推荐

  1. 快乐的一天从JAVA第一课开始,生活美滋滋!!!

    ---恢复内容开始--- 学JAVA第一天 今天稀里糊涂就把JAVA环境配好了 现在回想一下,吧环境跟大家分享一下…… 第一步:下载         JAVA(推荐使用谷歌浏览器,因为谷歌浏览器右键点 ...

  2. [小知识点] react 性能

    场景: jsx 绑定方法 方法有3种 1: // 在html中,使用箭头函数,自动绑定this class SearchHistory extends React.Component {      c ...

  3. IE6不兼容问题

    IE6不兼容问题 一.选择器兼容问题          1.交集选择器从IE7以上兼容(div.special): 2.儿子选择器(>):IE7开始兼容,IE6不兼容. 3.序选择器(first ...

  4. JAVA 多线程(2)

    一.首先 Thread 是实现了Runable 接口的类 理论上Thread 实例与直接实现runable接口的实例运行起来没有什么不同,但是由于JAVA 是单继承,所以如果想再一个类中实现2个不同的 ...

  5. elementUI vue upload完整示例

    elementUI 和vue 还有axios +java的完整示例, 代码敲了很久, 累死了, 以后用就直接复制了 ,很值吧!!! 1.html <!DOCTYPE html> <h ...

  6. 洛谷P1516 青蛙的约会

    题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清 ...

  7. 获取请求的ip工具类

    package com.example.util; import javax.servlet.http.HttpServletRequest; /** * get remote msg * 获取访问的 ...

  8. Tars 服务调服务

    1,创建一个 tars 服务工程 2,把需要调用的服务的 客户端接口文件 拷贝到当前服务 3,构建通信器 CommunicatorConfig 调用,如果是 springboot 开发客户端可以使用注 ...

  9. 9.Odoo产品分析 (二) – 商业板块(4) –讨论(1)

    查看Odoo产品分析系列--目录 讨论模块就是一个信息记录和消息提醒的功能,在登录到odoo平台的时候第一个界面就是它:  1. 收件箱 收件箱,登录者的邮箱管理,并显示未读邮件数量:    点击上面 ...

  10. iOS------Xcode 的clang 扫描器可以检测出所有的内存泄露吗

    在苹果没有出ARC(自动内存管理机制)时,我们几乎有一半的开发时间都耗费在这么管理内存上.后来苹果很人性的出了ARC,虽然在很大程度上,帮助我们开发者节省了精力和时间.但是我们在开发过程中,由于种种原 ...