python学习day3:函数

本文详细介绍了Python中set集合的特性和应用,包括去重、集合运算;Counter类用于计数;OrderedDict保持字典有序;defaultdict提供默认值;deque作为双向队列的特点;queue作为单向队列的应用;namedtuple创建可命名元组;并讲解了函数定义、参数传递、内置函数的使用及深浅拷贝的区别。

 

一、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()#指定当前指针位置

转载于:https://www.cnblogs.com/Xiaolong-Lv/p/5143902.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值