知识内容

1.collections模块介绍

2.collections模块使用

3.string模块介绍及使用

一、collections模块介绍

collections模块中提供了很多python的拓展数据类型,比如:ChainMap、Counter、deque、defaultdict、namedtuple、OrderedDict

我们都知道,Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型:

  • namedtuple(): 生成可以使用名字来访问元素内容的tuple子类
  • deque: 双端队列,可以快速的从另外一侧追加和推出对象
  • Counter: 计数器,主要用来计数
  • OrderedDict: 有序字典
  • defaultdict: 带有默认值的字典
  • ChainMap:为多个映射创建单一视图的类字典类型
  • UserDict:将字典包裹起来使得创建字典的子类更容易
  • UserList:将列表对象包裹起来使得创建列表的子类更容易
  • UserString:将字符串对象包裹起来使得创建字符串的子类更容易

二、collections模块使用

1.namedtuple

我们知道tuple可以表示不变集合,例如一个点的二维坐标可以表示为:

 p = (1, 2)

但是我们怎么知道(1,2)是用来表示坐标而不是表示别的呢?为此去定义一个类有小题大做了,这时namedtuple就派上了用处

 from collections import namedtuple

 Point = namedtuple('Point', ['x', 'y'])         # namedtuple('名称', [属性list])
p = Point(1, 3)
print(p.x) #
print(p.y) #
# 可以验证创建的Point是tuple的子类
print(isinstance(p, Point)) # 输出True
print(isinstance(p, tuple)) # 输出True

2.deque

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

deque是为了高效实现插入和删除的双向队列,适合用于队列和栈

 from collections import deque

 q = deque(['a', 'b', 'c'])
q.append('x')
q.appendleft('y')
print(q) # 输出: deque(['y', 'a', 'b', 'c', 'x']) q.pop() # 输出: deque(['y', 'a', 'b', 'c'])
print(q)
q.popleft()
print(q) # 输出: deque(['a', 'b', 'c'])

3.defaultdict

使用dict时,如果引用的key不存在,就会抛出keyError,如果希望key不存在时,返回一个默认值,可以使用get方法,也可以使用defaultdict

 from collections import defaultdict

 d = {'k1': '', 'k2': ''}
print(d.get('kkk', 0)) # 输出: 0 dd = defaultdict(lambda: 'N/A')
dd['k1'] = 3
print(dd['k1']) # 输出: 3
print(dd['kkk']) # 输出: N/A

4.Counter

Counter是一个简单的计数器,例如统计字符的个数:

 from collections import Counter

 c = Counter()
for ch in "programming":
c[ch] = c[ch] + 1 print(c)
# 输出结果: Counter({'r': 2, 'g': 2, 'm': 2, 'p': 1, 'o': 1, 'a': 1, 'i': 1, 'n': 1})

5.ChainMap

ChainMap可接受多个映射然后在逻辑上使它们表现为一个单独的映射结构。这些映射在字面上并不会合并在一起。相反,ChainMap只是简单地维护一个记录底层映射关系的列表,然后重定义常见的字典操作来扫描这个列表

 from collections import ChainMap

 d1 = {"k1": 1, "k2": 2}
d2 = {"k2": 1, "k3": 2} d = ChainMap(d1, d2)
print(d) # 如果有重复的键则会采取第一个键的值:
print(d["k1"])
print(d["k2"])
print(d["k3"]) print(len(d))
print(list(d.keys()))
print(list(d.values()))

三、string模块介绍及使用

1.string模块介绍

python3中string模块提供了一系列的常量供我们使用,当我们需要生成随机验证码时可能会用到string模块

2.string模块使用

 string.ascii_letters        -> 所有字母
string.ascii_uppercase -> 所有大写字母
string.ascii_lowercase -> 所有小写字母
string.digits -> 所有数字(0-9)
string.punctuation -> 所有符号
string.hexdigits -> 十六进制(0-F)
string.octdigits -> 八进制(0-7)
string.printable -> 所有可打印字符
string.whitespace -> 空白字符

随机密码生成:

 import string
import random x = string.digits + string.ascii_letters + string.punctuation # random中的choice() -> 是从序列中任意选择一个元素
pwd = ''.join([random.choice(x) for i in range(8)])
print(pwd)

python拓展2 collections模块与string模块的更多相关文章

  1. 小白的Python之路 day5 random模块和string模块详解

    random模块详解 一.概述 首先我们看到这个单词是随机的意思,他在python中的主要用于一些随机数,或者需要写一些随机数的代码,下面我们就来整理他的一些用法 二.常用方法 1. random.r ...

  2. Python之路(第十三篇)time模块、random模块、string模块、验证码练习

    一.time模块 三种时间表示 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) : 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.(从 ...

  3. Python 3之str类型、string模块学习笔记

    Windows 10家庭中文版,Python 3.6.4, Python 3.7官文: Text Sequence Type — str string — Common string operatio ...

  4. day5-随机数相关:random模块&string模块

    一.概述 随机数在程序设计中的属于比较基础的内容,主要用于验证场景(如验证码,生成账号对应的密码等),今天结合random模块和string模块来谈谈python中随机数那些事儿. 二.随机数实现相关 ...

  5. Python 字符串操作及string模块使用

    python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串操作需求: python的字符串属性函数 python的string模块 1.字符串属性方法操作: 1.>字符串格式输出对 ...

  6. python中string模块各属性以及函数的用法

    任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作.     python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串 ...

  7. 牛人总结python中string模块各属性以及函数的用法,果断转了,好东西

    http://blog.chinaunix.net/uid-25992400-id-3283846.html http://blog.csdn.net/xiaoxiaoniaoer1/article/ ...

  8. Python 标准库笔记(1) — String模块

    原文出处: j_hao104 String模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作. 1. 常用方法 常用方法 描述 str.capitalize() 把字符串的首字母大 ...

  9. Python自建collections模块

    本篇将学习python的另一个内建模块collections,更多内容请参考:Python学习指南 collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtupl ...

随机推荐

  1. arcgis-tomcat-cors

    C:\Program Files\ArcGIS\Server\framework\runtime\tomcat\webapps\arcgis#rest\WEB-INF\ (1)添加cors-filte ...

  2. Unity3D安卓程序中提示窗与常用静态方法封装

    Unity3D/安卓封装SDK常用方法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 IO -- - ...

  3. 简单介绍Spring的ContextLoaderListener

    在开发Spring的Web项目中,通常我们都会在web.xml中配置一个Spring的核心监听器,就是把Spring的IOC容器纳入Servlet容器中,配置如下: <listener> ...

  4. Appium笔记(二) 丶Appium的安装

    一.前言 Appium 中有个很重要的组件Appium-Server,它主要用来监听我们的移动设备(真机或模拟器),然将不同编程语言编写的 appium 测试脚本进行解析,然后,驱动移动设备来运行测试 ...

  5. (转)函数库调用 VS 系统调用

    Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions).可以参考<Linux程序设计>(英文原版为<Beginning ...

  6. java内存的分配和管理

    常用的三个内存空间 栈内存 ,堆内存 ,方法区 栈内存存储的内容: 局部变量. 函数(栈中的局部变量,需要手动赋值.当变量,或者函数执行完毕,就自动被释放) 堆内存,存储的内容 :全局变量.数据容器. ...

  7. CUDA H624解码性能测试

    测试环境: Cpu:       Inter(R)Core(TM)i7-4790 CPU @3.6GHZ GPU:         NVIDIA GeForce GTX960* 1 操作系统:   W ...

  8. test20180922 倾斜的线

    题意 问题描述 给定两个正整数P和Q.在二维平面上有n个整点.现在请你找到一对点使得经过它们的直线的斜率在数值上最接近P/Q(即这条直线的斜率与P/Q的差最小),请输出经过它们直线的斜率p/q.如果有 ...

  9. Sencha Touch+PhoneGap打造超级奶爸之喂养记(一) 源码免费提供(转)

    起源 非常高兴我的宝宝健康平安的出生了.对于初次做奶爸的我,喜悦过后,面临着各中担心,担心宝宝各项指标是否正常.最初几天都是在医院待着,从出生那一天开始,护士妹妹隔一段时间就会来问宝宝的喂奶,大小便, ...

  10. 内核启动卡在 Starting kernel ...

    一.有时log是这样的 Card did not respond to voltage select! bytes read ms (39.8 MiB/s) bytes read ms (13.4 M ...