一、数据结构与算法
序列操作:
- 序列解包占位符:_
- 占位需要丢弃的值
- 解包可迭代对象:*
- 产生一个列表对象,解压不确定个数或任意个数的可迭代对象时使用
- 想要解压后丢弃的值可使用*_或*ign(ignore)
- 命名切片:
- slice() 创建切片对象
- 属性:start、stop、step
- 方法:indices(size) 映射到一个已知大小序列上,返回一个三元组(start,stop,step)
- slice() 创建切片对象
- 过滤序列元素:
- 列表推导式
- filter(function,iterable) 创建一个迭代器
字典运算:
- 字典上执行数学运算仅作用于键,可以使用zip()反转键值
- 字典的keys()方法返回的键视图对象和items()方法返回的元素视图对象支持集合操作
- a.keys() & b.keys()
a.keys() - b.keys()
- a.keys() & b.keys()
collections模块:
- collections.deque([iterable[, maxlen=N]]) 创建双向队列,设置maxlen参数时创建固定大小的队列(实现优先级队列)
- collections.defaultdict([default_factory[, ...]]) 自动为将要访问的键创建映射实体(实现创建多值映射字典)
- collection.OrderedDict([items]) 迭代操作时保持元素被插入时的顺序(实现字典排序)
- collections.Counter(hashable) 生成一个字典对象,将元素映射到它出现的次数上(制表或者计数数据)
- most_common(n) 找出出现频率最高的单词
- collections.namedtuple() 构建带字段名的元组,具名元组不可更改
- _replace() 更新实例
- collections.ChainMap() 接受多个字典并将它们在逻辑上变为一个字典,该方法使用原来的字典(合并多个字典或映射)
heapq模块:
- heap[0] 永远是最小的元素
- heapq.nlargest(n, iterable[, key]) 从一个集合中获取最大的N个元素列表
- heapq.nsmallest(n, iterable[, key]) 从一个集合中获取最小的N个元素列表
- heapq.heapop() 将第一个元素弹出来,然后用下一个最小的元素来取代被弹出的元素
- heapq.heappush() 在队列上插入第一个元素
operator模块:
- operator.itemgetter(item) 通过某个或某几个关键字来排序字典
- operator.attrgetter(attr) 排序不支持原生比较的对象
itertools模块:
- itertools.groupby(iterable, key=None) 把迭代器中相邻的重复元素挑出来放在一起(使用前需要先排序)
- itertools.compress(iterable,Boolean) 输出iterable对象中对应选择器为True的元素(使用另一个关联的序列来过滤某个序列)