一、set集合:
1.特点: 访问速度快,去除重复
2.set是一个无序且不重复的元素集合
3.集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.
例:去重
1 #!/usr/bin/env python 2 # -*- encodeing:UTF-8 -*- 3 lst=[1,23,5,4,1,5,4] 4 print(set(lst)) 输出:[1,23,5,4]
例:交集、差集
1 #!/usr/bin/env python 2 # -*- encodeing:UTF-8 -*- 3 old_dict ={ 4 "#1":{'hostname':'c1','cpu_count':2,'mem_capicity':80}, 5 "#2":{'hostname':'c1','cpu_count':2,'mem_capicity':80}, 6 "#3":{'hostname':'c1','cpu_count':2,'mem_capicity':80}, 7 } 8 new_dict ={ 9 "#1":{'hostname':'c1','cpu_count':2,'mem_capicity':800}, 10 "#3":{'hostname':'c1','cpu_count':2,'mem_capicity':80}, 11 "#4":{'hostname':'c2','cpu_count':2,'mem_capicity':80}, 12 } 13 old=set(old_dict.keys()) 14 new=set(new_dict.keys()) 15 updata_set=old.intersection(old) 16 del_set=old.symmetric_difference(new) 17 add_set=new.symmetric_difference(updata_set) 18 print(updata_set) 19 print(del_set) 20 print(add_set)
二、counter计数
1.对字典数据的处理,追踪值出现的次数
1 import collections 2 obj=collections.Counter('fefheufheuf') 3 #print(obj) 4 #for k in obj.elements(): 5 # print(k) 6 for k,v in obj.items(): 7 print(k,v) 输出:h 2 f 4 u 2 e 3
三、orderedDict有序字典
1.orderdDict是对字典类型的补充,是dict的子类,它记住了内容添加的顺序。
2.按照顺序输出列表到字典
1 # -*- encodeing:UTF-8 -*- 2 import collections 3 d = collections.OrderedDict() 4 d[3]='A' 5 d[2]='B' 6 d[1]='C' 7 for k, v in d.items(): 8 print(k, v)
四、defaultdict默认字典
1 #!/usr/bin/env python 2 # -*- encodeing:UTF-8 -*- 3 import collections 4 def default_factory(): 5 return'default value' 6 d=collections.defaultdict(default_factory,foo='bar',ok='ok') 7 print('d:',d) 8 print('foo=>',d['foo']) 9 print('ok=>',d['ok']) 10 print('bar=>',d['bar'])
五、deque双向队列
deque,(全名double-ended queue)是一种具有队列和栈的性质的数据结构,双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。
1 #!/usr/bin/env python 2 # -*- encodeing:UTF-8 -*- 3 import collections 4 d=collections.deque('abcdefgh') 5 print('Deque:',d) 6 7 #!/usr/bin/env python 8 # -*- encodeing:UTF-8 -*- 9 import collections 10 d=collections.deque() 11 d.extend('abcdefg') 12 print('extend:',d) 13 d.append('h') 14 print('append:',d) 15 # add to left 16 d1=collections.deque() 17 d1.extendleft(range(6)) 18 print('extendleft:',d1) 19 d1.appendleft(6) 20 print('appendleft:',d1)
六、queue单向队列
Queue.Queue类即是一个队列的同步实现,队列长度可为无限或者有限
1 #!/usr/bin/env python 2 # -*- encodeing:UTF-8 -*- 3 import queue 4 q=queue.Queue() 5 q.put('123') 6 q.get('4545') 7 print(q)
七、可命名元组
根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型
1 #!/usr/bin/env python 2 # -*- encodeing:UTF-8 -*- 3 import collections 4 MytupleClass= collections.namedtuple('MytupleClass',['x','y','z']) 5 obj =MytupleClass(11,22,33) 6 print(obj.x) 7 print(obj.y) 8 print(obj.z) 输出:11 22 33
八、深浅拷贝
切片技术应用于所有的序列,包括:列表、字符串、元祖 ,但切片不能应用于字典。对字典只能使用*.copy()方法或*.deepcopy()方法,深浅拷贝,即可用于序列,也可用于字典
1 n1={'k1':8,'k2':787,'k3':[2,4]} 2 print(id(n1)) 3 n2=copy.copy(n1) 4 print(id(n2)) 5 n3=copy.deepcopy(n1) 6 print(id(n3)) 7 8 n4={'cpu':[90,],'mem':[80,],'disk':[80]} 9 n5 =copy.deepcopy(n4) 10 print(n5) 11 n5['cpu'][0]=60 12 print(n5) 输出:{'mem': [80], 'disk': [80], 'cpu': [90]} {'mem': [80], 'disk': [80], 'cpu': [60]}
九、函数
1.函数定义:使用def
1 def函数名(): 2 函数体 3 函数名()
1 #!/usr/bin/env python 2 def hanshu(): 3 num1=8 4 num1+=8 5 print(num1) 6 hanshu() 输出:16
2.默认参数
1 def wa(a1,a2=232,a3=24):#默认参数必须放在最后 2 print(a1,a2,a3) 3 wa(a1=53,a2=989)
3.动态参数
1 def show(*arg): 2 print(arg,type(arg)) 3 show(78,98) 4 5 def show(**args): 6 print(args,type(args)) 7 show(k1=32,k2=898,k3=343) 8 9 def show (*args,**kwargs): 10 print(args,type(args)) 11 print(kwargs,type(kwargs)) 12 show(34,43,k1=45,k2=45,)
4.内置函数
all(),any() #使用bool判断真假 all()
bin() 二进制 ord('A') 字符转换成数字 chr(78)数字转换成字符 random.randint(1,99)随机数
callable用法(f=lambda x:x+1 callable(f))#判断真假enumerate用法
1 l1={'alvin','boy','eric'} 2 for i,item in enumerate(l1,1): 3 print(i,item) 输出:1 alvin 2 eric 3 boy
map与filte
5.f.tell() #查看当前指针位置
f.seek()#指定当前指针位置