集合,函数 --- Python重新开始第三天(二)

集合

set集合,是一个无序且不重复的元素集合

s=set(['alex','alex','sb'])
print(s)

>>>{'sb', 'alex'}

s=set('hello')

print(s)

>>>{'o', 'l', 'h', 'e'}

几种方法

 1 s={1,2,3,4,5,6}
 2 #添加
 3 s.add('s')
 4 print(s)
 5 >>>{1, 2, 3, 4, 5, 6, 's'}
 6 
 7 s.clear()
 8 print(s)
 9 >>>set()
10 
11 s1=s.copy()
12 浅拷贝
13 
14 随机删
15 s.pop()
16 
17 s={'sb',1,2,3,4,5,6}
18 #随机删
19 # s.pop()
20 
21 #指定删除
22 s.remove('sb')
23 # s.remove('hellol') #删除元素不存在会报错
24 s.discard('sbbbb')#删除元素不存在不会报错
25 print(s)
26 >>>{2, 3, 4, 1, 5, 6}
27 
28 #求交集
29 #A1,A2为集合
30 A1.intersection(A2)  =  A1 & A2
31 
32 #求并集
33 A1.union(A2)  =  A1 | A2
34 
35 #差集(A1有A2没有)
36 A1.difference(A2)  =  A1 - A2
37 
38 #交叉补集 (只在A1有的 + 只在A2有的)
39 A1.symmetric_difference(A2) = A1^A2
40 
41 print(A1.issubset(A2))  #A1 是否为  A2 的子集,是为"True"
42 
43 print(A1.issuperset(A2))  #A1 是否为  A2 的父集,是为"True"
44 
45 #更新
46 s1={1,2}
47 s2={5,4,"s"}
48 s1.update(s2) #把s2更新到s1中,一次全部更新进去
49 print(s1)
50 >>>{1, 2, 's', 4, 5}
51 
52 s1={1,2}
53 s1.add(3, 4) #报错!add只能加一个值
54 
55 s1={1,2}
56 s2={5,4,"s"}
57 s1.union(s2) #不会更新
58 print(s1)
59 >>>{1, 2}
60 注意:如果是有s3接收了s1.union(s2),则接收到的会是一个并集,但对s1是不变的

 函数

def  func1(x, *args,**kwargs):

func1(1,2,3,4,5, name="李" ,age=18)

在这里面:1传给x;  2,3,4,5作为位置参数传给*args,*args会把2,3,4,5处理成一个元组; 

                  name="李" ,age=18作为关键字参数传给**kwargs, **kwargs会把它处理成一个字典;

 1 def test(x,y,z):#x=1,y=2,z=3
 2     print(x)
 3     print(y)
 4     print(z)
 5 
 6 #位置参数,必须一一对应,缺一不行多一也不行
 7 test(1,2,3)
 8 
 9 #关键字参数,无须一一对应,缺一不行多一也不行
10 test(y=1,x=3,z=4)
11 
12 ########位置参数必须在关键字参数左边##########
13 #所以就有了 *args 在 **kwargs左边
14 test(1,y=2,3)#报错
15 test(1,3,y=2)#报错
16 test(1,3,z=2)
17 test(1,3,z=2,y=4)#报错
18 test(z=2,1,3)#报错
19 
20 def handle(x,type='mysql'):
21     print(x)
22     print(type)
23 handle('hello')
24 handle('hello',type='sqlite')
25 handle('hello','sqlite')
26 
27 def install(func1=False,func2=True,func3=True):
28     pass
29 
30 #参数组:**字典 *列表
31 def test(x,*args):
32     print(x)
33     print(args)
34 
35 test(1)
36 test(1,2,3,4,5)
37 test(1,{'name':'alex'})
38 test(1,['x','y','z'])
39 test(1,*['x','y','z'])
40 test(1,*('x','y','z'))
41 
42 def test(x,**kwargs):
43     print(x)
44     print(kwargs)
45 test(1,y=2,z=3)
46 test(1,1,2,2,2,2,2,y=2,z=3)
47 test(1,y=2,z=3,z=3)#会报错 :一个参数不能传两个值
48 
49 def test(x,*args,**kwargs):
50     print(x)
51     print(args,args[-1])
52     print(kwargs,kwargs.get('y'))
53 test(1,1,2,1,1,11,1,x=1,y=2,z=3) #有x所以报错
54 test(1,1,2,1,1,11,1,y=2,z=3)
55 
56 test(1,*[1,2,3],**{'y':1})
原文地址:https://www.cnblogs.com/lishuaing/p/10674149.html