文章目录

  • 一、Counter()类
  • 1、创建Counter:
  • 2、获得Counter中的所有元素:
  • 3、统计counter中的所有元素个数
  • 4、将counter中的键进行转换
  • 5、列出Counter中最常见的或最少见的几个元素
  • 6、使某元素的key值减少:
  • 7、删除元素
  • 8、添加counter元素
  • 9、counter之间的运算
  • 二、deque类
  • 参考资料

  collections是Python内建的一个集合模块,提供了许多有用的集合类。

一、Counter()类

  类是一个无序容器,存储元素形式为:key-value,key代表元素,value代表元素的出现频数。接下来看Counter的一些操作;

1、创建Counter:

可以创建一个空的Counter,之后在空的Counter上进行一些操作。

cou0 = Counter()#创建出来一个空的Counter类

也可以创建的时候传进去一个迭代器(数组,字符串,字典等):

string='we are family and we love peace.We have the Greatwall and the yellow river!'
str_dict={'A':2,'B':5,'G':7,'E':90,'M':6,'N':6, 'x':20,'z':30}
cou1 = Counter(string)#以字符串形式创建Counter类
print('cou1 为:------>', cou1)
cou2 = Counter(str_dict)#以字典形式创建Counter类
print('cou2 为:------>', cou2)
cou3 = Counter(A=1, B=2, x=23, y=34, z=45, o=-5, m=0)#以类字典形式创建即使用键值组合直接创建
print('cou3 为:------>', cou3)

运行结果如下:

Python中coff什么意思 python中col_字符串


Python中coff什么意思 python中col_学习笔记_02

2、获得Counter中的所有元素:
print('cou3中的所有元素:',list(cou3)) #返回重复次数大于等于1的元素
print('cou3中的非重复元素',set(cou3.elements()) #返回重复次数大于等于1的元素

运行结果如下:

Python中coff什么意思 python中col_学习笔记_03


Python中coff什么意思 python中col_字符串_04

3、统计counter中的所有元素个数
print('cou3中所有元素计数总数为:',sum(cou3.values()))
4、将counter中的键进行转换
print('将cou3中的键转为列表为:',list(cou3))
print('将cou3中的键转为集合为:',set(cou3))
print('将cou3中的键转为字典为:',dict(cou3))
print('将cou3中的键转为(elem,count)形式为:',cou3.items())

运行结果如下;

Python中coff什么意思 python中col_参考资料_05

5、列出Counter中最常见的或最少见的几个元素
print('取出cou3中计数值最小的前4个元素:',cou3.most_common()[:-5:-1])
print('取出cou3中计数值最大的前2个元素:',cou3.most_common()[0:2])

运行结果如下:

Python中coff什么意思 python中col_Python中coff什么意思_06

6、使某元素的key值减少:
print('cou2 为:------>', cou2)
cou2.subtract('AA')#这样导致‘A’的值为0但是并不是删除了key值
cou2.subtract('MMMMMMMMMM')#这样的话‘M’的值就是负数了
print( 'A 的值为------>', cou2['A'])
print('M 的值为------>', cou2['M'])
print('cou2 为:------>', cou2)

运行结果如下:

Python中coff什么意思 python中col_学习笔记_07

7、删除元素
del cou2['A']
print('cou2 为:------>', cou2)#这里就没有A的key值了

运行结果如下:

Python中coff什么意思 python中col_删除元素_08

8、添加counter元素
cou1.update('balabalabalabalabala')#增加
print('b 的值为------>', cou1['b'])
print('a 的值为------>', cou1['a'])

运行结果如下:

Python中coff什么意思 python中col_学习笔记_09

9、counter之间的运算
#一般的运算操作也是满足的
print('cou2 和 cou3之和为:',cou2+cou3)
print('cou2 和 cou3并集为:',cou2|cou3)
print('cou2 和 cou3交集为:',cou2 & cou3)
print('cou2 和 cou3之差为:',cou2 - cou3)

二、deque类

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

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

from collections import deque
q1 = deque(['a', 'b', 'c'])
q1.append('x')
q1.appendleft('y')
print(q1)
q1.popleft()
print(q1)
q1.remove('b')
print(q1)

q2 = deque(maxlen=3)
q2.append('1')
q2.append('2')
q2.append('3')
print(q2)
q2.append('4')
print(q2)

运行结果如下;

Python中coff什么意思 python中col_删除元素_10


  从上述代码中可以看出,deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。

  另外,deque还可以指定最大长度,如果添加的元素超过了最大长度了,那么左侧的元素会被自动移除。

参考资料

  1. 廖雪峰的官网:https://www.liaoxuefeng.com/wiki/897692888725344/973805065315456