zoukankan      html  css  js  c++  java
  • 【collections】集合模块

    标准库 collections 是 python 内建的一个集合模块,里面封装了许多集合类。

    概述

    collections模块包含了除list、dict、和tuple之外的容器数据类型,如counter、defaultdict、deque、namedtuple、orderdict等。

    这个模块实现了特定目标的容器,以提供Python标准内建容器 dict , list , set , 和 tuple 的替代选择。参考python3.8.1文档

    类/对象 说明
    namedtuple() 创建命名元组子类的工厂函数
    deque 类似列表(list)的容器,实现了在两端快速添加(append)和弹出(pop)
    ChainMap 类似字典(dict)的容器类,将多个映射集合到一个视图里面
    Counter 字典的子类,提供了可哈希对象的计数功能
    OrderedDict 字典的子类,保存了他们被添加的顺序
    defaultdict 字典的子类,提供了一个工厂函数,为字典查询提供一个默认值
    UserDict 封装了字典对象,简化了字典子类化
    UserList 封装了列表对象,简化了列表子类化
    UserString 封装了列表对象,简化了字符串子类化

    deque

    collections 中队列相关的集合只有一个:deque。

    deque 是双边队列(double-ended queue),具有队列和栈的性质,在 list 的基础上增加了移动、旋转和增删等。deque是通过extend方法初始化集合元素的。

    deque(maxlen=N)创建一个固定长度的队列。当有新纪录加入而队列已满时会自动移除最老的那条记录。

    d = collections.deque([]) 说明
    d.append('a') 在最边添加一个元素,此时 d=deque('a')
    d.appendleft('b') 在最边添加一个元素,此时 d=deque(['b', 'a'])
    d.extend(['c','d']) 在最边添加所有元素,此时 d=deque(['b', 'a', 'c', 'd'])
    d.extendleft(['e','f']) 在最边添加所有元素,此时 d=deque(['f', 'e', 'b', 'a', 'c', 'd'])
    d.pop() 将最边的元素取出,返回 'd',此时 d=deque(['f', 'e', 'b', 'a', 'c'])
    d.popleft() 将最边的元素取出,返回 'f',此时 d=deque(['e', 'b', 'a', 'c'])
    d.rotate(-2) 向左旋转两个位置(正数则向右旋转),此时 d=deque(['a', 'c', 'e', 'b'])
    d.count('a') 队列中'a'的个数,返回 1
    d.remove('c') 从队列中将'c'删除,此时 d=deque(['a', 'e', 'b'])
    d.reverse() 将队列倒序,此时 d=deque(['b', 'e', 'a'])

    deque是线程安全的,也就是说你可以同时从deque集合的左边和右边进行操作而不会有影响。

  • 相关阅读:
    HDU 5115 Dire Wolf (区间DP)
    HDU 4283 You Are the One(区间DP(最优出栈顺序))
    ZOJ 3469 Food Delivery(区间DP好题)
    LightOJ 1422 Halloween Costumes(区间DP)
    POJ 1651 Multiplication Puzzle(区间DP)
    NYOJ 石子合并(一)(区间DP)
    POJ 2955 Brackets(括号匹配一)
    POJ 1141 Brackets Sequence(括号匹配二)
    ZOJ 3537 Cake(凸包+区间DP)
    Graham求凸包模板
  • 原文地址:https://www.cnblogs.com/ytxwzqin/p/12300344.html
Copyright © 2011-2022 走看看