当前位置:   article > 正文

python 基础知识点(蓝桥杯python科目个人复习计划13)

python 基础知识点(蓝桥杯python科目个人复习计划13)

今日复习内容:竞赛常用标准库:collections

一.Counter:计数器

1.用于计数,看作一个dict;可以直接对列表统计每个元素出现的次数。

  1. from collections import Counter
  2. a = ['apple','banana','apple','cat','cat','cat','dog']
  3. b = Counter(a)
  4. print('type(b) = ',type(b))
  5. print('b = ',b)

运行结果:

 

用普通方法也可以,具体如下:

  1. a = ['apple','banana','apple','cat','cat','cat','dog']
  2. b = {}
  3. for x in a:
  4. b[x] = b.get(x,0) + 1
  5. print(b)

运行结果:

 

 可以看出,用标准库Counter更方便一些。

2.定义方式

  • Counter(可迭代对象)
  • Counter(字典)
  1. from collections import Counter
  2. a = Counter() # 空Counter
  3. print(a)
  4. a = Counter('hello world') # 统计每个字符出现次数
  5. print(a)
  6. a = Counter([1,2,3,1,2,4]) # 统计每个元素出现的次数
  7. print(a)
  8. # 利用字典初始化每个元素(key)和出现的次数(value)
  9. a = Counter(a = 1,b = 2,c = 3)
  10. print(a)
  11. a = Counter({'a':1,'b':2,'c':3})
  12. print(a)

运行结果:

 

  • most_common(k):  筛选出现频率topk
  • elements():  返回一个迭代器,每个元素重复对应次数
  • clear():    清空
  • 大部分字典的功能均可以使用
  • 数学运算 
  1. from collections import Counter
  2. a = Counter('hello world')
  3. print('a = ',a)
  4. print('Top 2 :',a.most_common(2))
  5. print('Top 1 :',a.most_common(1))
  6. print('a.elements = ',a.elements())
  7. print('all elements = ',list(a.elements()))
  8. print(a.keys())
  9. print(a.values())
  10. a.clear()
  11. print('a = ',a)
  12. c = Counter(a = 3,b = 2)
  13. d = Counter(a = 2,b = 1)
  14. print('c + d = ',c + d)
  15. print('c - d = ',c - d)
  16. print('c & d = ',c & d)
  17. print('c | d = ',c | d)

运行结果:

 

二.deque :双端队列

  • 大多数功能同 list  相似,但是删除和插入操作比 list 更高效

       append(x)  : 添加x到右端

       appendleft(x)  : 添加x到左端

       pop() : 移去并且返回一个元素,deque最右端的那个

       popleft() : 移去并且返回一个元素,deque最左端的那个

       insert(i,x) : 在位置 i 插入 x

       extend(iterable) : 扩展deque的右侧,通过添加 iterable 参数中的元素

       extend(iterable) : 扩展deque的左侧,通过添加 iterable 参数中的元素

                                   注意,左添加时,在结果中 iterable 参数中的顺序将被反过来添加

       remove(value) : 移除找到的第一个 value

  1. from collections import deque
  2. a = deque([1,2,3,4])
  3. a.append(5)
  4. a.appendleft(0)
  5. print('a = ',a)
  6. a.pop()
  7. print('a = ',a)
  8. a.popleft()
  9. print('a = ',a)
  10. a.extend([2,3,5])
  11. print('a = ',a)
  12. a.remove(2)
  13. print('a = ',a)

运行结果:

 

  • 一些方法 

       clear() : 清空

       copy():拷贝

       count(x):计算deque中x的个数

       index(x,[,start[,stop]]): 返回x在deque中的位置(索引start之后,索引stop之前) 

       reverse():将deque逆序排列

       rotate(n) :向右循环移动n步,若n为负数,则向左移动n步

       maxlen: deque的最大尺寸,如果没有限制就是None

  1. from collections import deque
  2. a = deque([1,2,3,1,4,5,2,6,2,6])
  3. print('a = ',a)
  4. a.reverse()
  5. print('a = ',a)
  6. b = a.count(2)
  7. print('2出现的次数是 :',b)
  8. a.rotate(2)
  9. print('a = ',a)
  10. print('4的位置是:',a.index(4))

运行结果:

 

三.defaultdict :有默认值的字典

  • 在字典中获取key有两种方法,一种是get,另一种是通过[]获取
  • 使用dict时,如果key不存在,则会抛出KeyError
  • 如果希望key不存在时,返回一个默认值,则使用defaultdict
  1. from collections import defaultdict
  2. d = defaultdict(int)
  3. print(d['x'])
  4. d = defaultdict(list)
  5. print(d['x'])
  6. d = defaultdict(dict)
  7. print(d['x'])
  8. d = defaultdict(set)
  9. print(d['x'])

运行结果:

 

  1. from collections import defaultdict
  2. d = defaultdict(int)
  3. print(d['x'])
  4. d = defaultdict(list)
  5. print(d['x'])
  6. d = defaultdict(dict)
  7. print(d['x'])
  8. d = defaultdict(set)
  9. print(d['x'])

运行结果:

 

  1. from collections import defaultdict
  2. a = [('reda',1),('yellow',2),('black',3),('yellow',4),('blue',5)]
  3. d = {}
  4. for k,v in a:
  5. if k not in d.keys():
  6. d[k] = []
  7. d[k].append(v)
  8. print(d)

运行结果:

 

四. OrderDict :有序字典 

  • 与字典基本相同,key按照插入的顺序排序
  • popitem 函数:删除最后一个元素返回
  • OrderDict:可以指定参数last,last默认为True,删除最后一个,否则删除第一个

举例:(按顺序删)

  1. from collections import OrderedDict
  2. a = [('a',1),('b',2),('c',3)]
  3. d = OrderedDict(a)
  4. print(d)
  5. while len(d) != 0:
  6. print('删除的元素为:',d.popitem(False))
  7. print('d = ',d)

运行结果:

 

(逆序删) 

  1. from collections import OrderedDict
  2. a = [('a',1),('b',2),('c',3)]
  3. d = OrderedDict(a)
  4. print(d)
  5. while len(d) != 0:
  6. print('删除的元素为:',d.popitem(True))
  7. print('d = ',d)

运行结果:

 

普通方法:

  1. from collections import OrderedDict
  2. a = [('a',1),('b',2),('c',3)]
  3. d = dict(a)
  4. print(d)
  5. while len(d) != 0:
  6. print('删除的元素为:',d.popitem())
  7. print('d = ',d)

运行结果:

 

  • move_to_end(key,last = True) 函数

       OrderDict将key移动到任一端,last = True表示右端,否则就是左端。key不存在则报错。

  1. from collections import OrderedDict
  2. a = [('a',1),('b',2),('c',3)]
  3. d = OrderedDict(a)
  4. print(d)
  5. d.move_to_end('b')
  6. print(d)
  7. d.move_to_end('b',False)
  8. print(d)

运行结果:

 

OK,又复习完了一个竞赛常用标准库,明天继续! 

 

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/196867
推荐阅读
相关标签
  

闽ICP备14008679号