个人主页: Aileen_0v0
热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
个人格言:“没有罗马,那就自己创造罗马~”
collections这个标准库中包含了很多的容器,这个库里面的工具是基于我们学过的容器如字典,元组扩展的。
Counter本身就是一个字典 | |||
无计数器的技术方法:
a = ["apple","banana","apple","cat","cat","cat","dog"]
b = {}
for x in a:
b[x] = b.get(x,0) + 1
print(b)
用计数器的技术方法:
from collections import Counter
a = ["apple","banana","apple","cat","cat","cat","dog"]
b =Counter(a)
print("type(b) = ",type(b))
print("b = ",b)
from collections import Counter
a = Counter() #空Counter
print(a)
a = Counter("Hello World") #统计每个字符
print(a)
a = Counter([1,2,3,1,2]) #统计每个元素出现次数
print(a)
from collections import Counter
c = Counter(a=3,b=1)
d = Counter(a=2,b=2)
print("c+d =",c+d)
print("c-d =",c-d)
print("c&d =",c&d) #与运算,取c和d的交集
print("c|d =",c|d) #并集
大部分操作和list类似,但是删除和插入操作比list更高效 | |||
方法 | 功能 |
append(x) | 添加x 到右端 |
appendleft(x) | 添加x到左端 |
pop() | 移去并且返回一个元素,deque 最右侧的那一个。 |
popleft() | 移去并且返回一个元素,deque 最左侧的那一个。 |
insert(i, x) | 在位置i插入X。 |
extend(iterable) | 扩展deque的右侧,通过添加iterable参数中的元素 |
extendleft(iterable) | 扩展deque的左侧,通过添加iterable参数中的元素。 注意,左添加时,在结果中iterable参数中的顺序将被反过来添加。 |
remove(value) | 移除找到的第一个 value。 |
clear() | 清空 |
copy() | 拷贝 |
count(x) | 计算deque中元素等于x的个数 |
index(x[,start[,stop]]) | 返回x在deque中的位置(在索引start之后,索引stop之前) |
reverse() | 将deque逆序排列。 |
rotate(n=1) | 向右循环移动n步。如果n是负数,就向左循环。 |
maxlen | Deque的最大尺寸,如果没有限定就是None。 |
from collections import deque
a = deque([1,2,3,4,1,4,2,4])
print("a = ",a)
#将整个列表向右挪一位
a.rotate(1)
print("a = ",a) #a = deque([4, 1, 2, 3, 4, 1, 4, 2])
#将整个列表向左挪两位
a.rotate(-2) #a = deque([4, 1, 2, 3, 4, 1, 4, 2])
from collections import defaultdict
s = [('yellow',1),('blue',2),('yellow',3),("blue",4),("red",1)]
d = defaultdict(list)
for k,v in s:
d[k].append(v)
print(d)
from collections import OrderedDict
data = [("a",1),("b",2),("c",3)]
d = dict(data)
print(d)
while len(d) != 0:
print("删除的元素为:",d.popitem())
print("d = ",d)