a ={}print(type(a))#<class 'dict'>
a ={1,2}print(type(a))#<class 'set'>
a =set([1,2])print(a)#{1, 2}if1in a:print('是')#是
set的关系 - 包含与被包含
a是b的父集合
a包含b
a.issuperset(b)
a >= b
a是b的子集合
b包含a
a.issubset(b)
a <= b
a ={1,2}
b ={1}
a.issuperset(b)#True
a >= b #True
b.issubset(a)#True
b <= a #True
set的运算
运算
符号
不改变a
将运算结果赋值给a
并集
无
a.union(b)
a.update(b)
交集
a & b
a.intersection(b)
a.intersection_update(b)
相减
a - b
a.difference(b)
a.difference_update(b)
异或
a ^ b
异或:并集 - 交集
deque 双端队列
基本操作
操作
增加
弹出
增加
右边(默认)
append
pop
extend
左边
appendleft
popleft
extendleft
from collections import deque
a = deque((1,2))
a.appendleft(3)print(a)#deque([3, 1, 2])
a.pop()#2print(a)#deque([3, 1])
a.extend(range(4,6))print(a)#deque([3, 1, 4, 5])
作为栈使用:append + pop 作为队列使用:append + popleft
更多操作
函数
clear()
insert()
rotate()
作用
清空
指定位置
将最右边的一个元素移动到最左边
a = deque((1,2))
a.insert(1,'b')print(a)#deque([1, 'b', 2])
a.rotate()print(a)#deque([2, 1, 'b'])
a.clear()print(a)#deque([])
堆操作
小顶堆条件:
,i = 0,2,… (n-1)/2,二叉树效果图:
python中,堆不是数据类型,但是列表是当成堆处理的,列表可以转化成堆
函数
参数
作用
heapify
heap
将堆属性应用到列表上
heappop
弹出最小的元素
heappush
heap, item
加入元素
heapreplace
先弹出最小元素,后加入新元素
heappushpop
先加入新元素,后弹出最小元素
nlargest
n, iterable, key=None
返回最大的n个元素
nsmallest
返回最小的n个元素
merge
*iterable, key=None, reverse=False
多个小有序堆合成一个大有序堆
from heapq import*
a =[0,1,2,3,0.5]print(a)#[0, 1, 2, 3, 0.5]
heapify(a)print(a)#[0, 0.5, 2, 3, 1]
heapreplace(a,-1)#-1print(a)#[-1, 0.5, 2, 3, 1]
heappushpop(a,-2)#-2print(a)#[-1, 0.5, 2, 3, 1]
b = nlargest(3,a)print(b)#[3, 2, 1]
c =list(merge(a,b))print(c)#[-1, 0.5, 2, 3, 1, 3, 2, 1]
Dict - ChainMap 字典的假合并
key相同时,排名最靠前的字典拥有最高优先级
from collections import ChainMap
a = ChainMap({1:1},{2:2},{3:3})print(a)#ChainMap({1: 1}, {2: 2}, {3: 3})print(a[2])#2
应用:决定各变量的优先级:
b = ChainMap(locals(),globals())for i in b:...
a = Counter({1:1,2:2})
b = Counter({2:2,3:3})
c = Counter({1:1,2:-1})
a + b #Counter({2: 4, 3: 3, 1: 1})
a - b #Counter({1: 1})
a & b #Counter({2: 2})
a | b #Counter({3: 3, 2: 2, 1: 1})+c #Counter({1: 1})-c #Counter({2: 1})
Counter对象的更多方法
函数
作用
elements()
以迭代器形式,返回所有key
most_common([n])
返回value最大的n个元素
sum(a.values())
计算所有元素出现次数的总和
a = Counter({1:1,2:2})[i for i in a.elements()]#[1, 2, 2]
a.most_common(1)#[(2, 2)]sum(a.values())#3
Dict - defaultdict对象
dict的子类,区别:访问不存在的key时,不报错,直接把默认的value赋值给key
default_factory
缺省
int
str
list
set
默认值
None
0
‘’
[]
set()
from collections import defaultdict
a = defaultdict(int)
a[1]#0print(a)#defaultdict(<class 'int'>, {1: 0})