python小白-day3 collections系列

一、计数器(Counter)

Counter是对字典类型的补充,用于追踪值的出现次数。

注:因Counter继承于dict类,所以其具备dict类的所有功能

1 import collections
2 c1 = collections.Counter(‘skdhflsdkngsnlknvdlfb‘)
3 print(c1)

Counter

1、__missing__(self, key)对于不存在的元素,返回计数器为0

import collections
c1 = collections.Counter(‘skdhflsdkngsnlknvdlfb‘)
print(c1.__missing__(‘q‘))

2、most_common(self, n=None)显示前n个元素和计数器

1 import collections
2 c1 = collections.Counter(‘skdhflsdkngsnlknvdlfb‘)
3 print(c1)
4 print(c1.most_common(4))

most_common

3、elements(self)计数器中的所有元素,注:此处非所有元素集合,而是包含所有元素集合的迭代器

import collections
c1 = collections.Counter(‘skdhflsdkngsnlknvdlfb‘)
item = list(c1.elements())
print(item)

4、update(self, iterable=None, **kwds)更新计数器,其实就是增加;如果原来没有,则新建,如果有则加一

1 import collections
2 c = collections.Counter(‘which‘)
3 print(c)
4 c.update(‘witch‘)
5 print(c)
6 d = collections.Counter(‘watch‘)
7 c.update(d)
8 print(c)

update

5、subtract(self, iterable=None, **kwds)相减,原来的计数器中的每一个元素的数量减去后添加的元素的数量

1 import collections
2 c = collections.Counter(‘which‘)
3 print(c)
4 c.subtract(‘witch‘)
5 print(c)
6 d = collections.Counter(‘watch‘)
7 c.subtract(d)
8 print(c)

subtract

二、有序字典(orderedDict )

orderdDict是对字典类型的补充,他记住了字典元素添加的顺序

1 import collections
2 o = collections.OrderedDict()
3 o[‘k1‘] = ‘v1‘
4 o[‘k2‘] = ‘v2‘
5 o[‘k3‘] = ‘v3‘
6 print(o)
7 print(o)
8 print(o)
9 print(o)

orderedict

其余功能等同于字典

三、默认字典(defaultdict)

defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。

1 import collections
2 li = [11,22,33]
3 ded = collections.defaultdict(list)
4 for i in li:
5     ded[‘k1‘].append(i)
6 print(ded)

defaultdict

四、可命名元组(namedtuple)

根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型。

1 import collections
2 person = collections.namedtuple(‘person‘,‘name age gender‘)
3 print(type(person))
4 hetan = person(name = ‘hetan‘,age = 26,gender = ‘male‘)
5 print(hetan[0])
6 print(‘{name} is {age} years old {gender}‘.format(name = hetan[0],age = hetan[1],gender = hetan[2]))

namedtuple

五、双向队列(deque)

一个线程安全的双向队列

 1 import queue
 2 q = queue.deque()
 3 for i in [1,2,3,4,5]:
 4     q.append(i)
 5 print(q)
 6 q.appendleft(6)
 7 print(q)
 8 q.popleft()
 9 print(q)
10 q.rotate(2)
11 print(q)
12 li = [7,8,9,10]
13 q.extendleft(li)
14 print(q)

deque

1、appendleft(n)从左边像队列中增加元素,n表示增加的元素

2、popleft()从队列的左边删除元素,并且返回删除值

3、rotate(n)旋转队列,默认时值为1,由右边开始旋转,负值代表左边旋转,n代表从队列的第一个元素开始,n从1开始计数

4、extendleft(n)从左边扩展队列,n表示扩展的队列

注:既然有双向队列,也有单项队列(先进先出 FIFO )

1 import queue
2 q = queue.Queue()
3 for i in [1,2,3,4,5]:
4     q.put(i)
5 for i in range(5):
6     print(q.get())

Queue

时间: 2024-10-22 19:21:40

python小白-day3 collections系列的相关文章

python小白-day3 深浅拷贝

一.深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址.下面是字符串例子,数字与其相同: 1 2 3 4 5 6 7 8 9 import copy n1 = 'abc' n2 = n1 n3 = copy.copy(n1) n4 = copy.deepcopy(n1) print(id(n1)) print(id(n2)) print(id(n3)) print(id(n4)) 对于字典.元祖.列表 而言,进行赋值.浅拷贝和深拷贝时,其内存地址的变

python 数据结构 - collections系列

python中collections系列是对字典.元祖等数据结构的补充,不是python内置的,在使用之前,需要用 import collections 导入. 在collections系列中主要有以下内容: 1. Counter(seq) Counter()继承了dict类,其中seq为可迭代对象.接收seq,并以字典形式返回seq中每个元素(hashable)出现的次数. 1 import collections 2 3 s = 'abcdedcbae' 4 l = ['a','b','c'

python小白-day6 time&datetime模块

time&datetime ?一.time模块 time模块提供各种操作时间的函数 说明:一般有两种表示时间的方式:       第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的       第二种以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同 1 2 3 4 5 6 7 8 9 10 11 12 import time print('clock():',time.cl

python s12 day3

python s12 day3 深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import copy # ######### 数字.字符串 ######### n1 = 123 # n1 = "i am alex age 10" print(id(n1)) # ## 赋值 ## n2 = n1 print(id(n2)) # ## 浅拷贝 ## n2 = cop

小白C#窗体系列-02.二维码生成器

今天是情人节,咳,男人们带着他们的男朋友们,女人带着她们的女朋友们愉快的逛着街.逆天也就不随大众了,就继续出C#小白系列的教程了~~~ 实在没空去录教程了,就看看文档吧,大家都知道的,录教程是比较花时间的,我不想草草了事,那是对大家和我自己的不负责,视频可以以后再录,不过软件和源码以及文档得先弄好,毕竟逆天不喜欢失信与自己~~ 废话不说了,开始我们的教程吧~ 软件下载(.NET 4.0 框架)http://pan.baidu.com/s/1i3BUVNv[源码看下面] 一.设计图纸: 二.代码分

小白C#窗体系列-01.简易浏览器

最近重伤,今天正好放假,就抽个空出C#第一集,开发完毕... 如果你看不到这篇文章,那过一天就可以看见了. 软件下载(.NET 4.0 框架)http://pan.baidu.com/s/1c03X7vM[源码看下面] 一.设计图纸: 二.代码分析 1.后退键. 前进键.停止键.刷新键:这几个功能本来我是准备用个数组来存储,可以前进后退的,后来啃他自带方法的时候发现微软提供了方法,也就偷个懒了后退按钮 this.webBrowser1.GoBack(); 前进按钮 this.webBrowser

python模块介绍- collections(5)-OrderedDict 有序字典

1.3.5 OrderedDict 有序字典 OrderedDict是dict的子类,它记住了内容添加的顺序. import collections print 'Regular dictionary:' d = {} d['a'] = 'A' d['b'] = 'B' d['c'] = 'C' for k, v in d.items(): print k, v print '\nOrderedDict:' d = collections.OrderedDict() d['a'] = 'A' d

Python学习day3作业

Python学习day3作业 days3作业 作业需求     HAproxy配置文件操作 根据用户输入,输出对应的backend下的server信息 可添加backend 和sever信息 可修改backend 和sever信息 可删除backend 和sever信息 操作配置文件前进行备份 添加server信息时,如果ip已经存在则修改;如果backend不存在则创建:若信息与已有信息重复则不操作 [x] 博客 [x] 查询backend下的server信息 [x] 添加backend和se

Python小白-day10 memcache&redis

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Python操作Memcached 1.第一次操作 import memcache   mc = memcache.Clie