08我的Python学习之路--集合函数

tech2022-09-08  111

文章目录

1.遍历字典2.集合 set `集合和列表很相似`3.集合的运算4.函数

1.遍历字典

1.1 keys() 该方法返回字典所有的key 示例:d =dict(a = 1,b = 2,c = 3, d = 4,e = 5) print(d,type(d)) print(d.keys()) 运行结果: 1.2 values() 该方法返回一个序列 序列中保存有字典的值 示例:print(d.values()) 运行结果: 1.3 items() 该方法返回字典中所有的项 它返回一个序列,序列中包含有双值子序列 双值分别是字典中key和value。 示例:print(d.items(),type(d.items())) for k,v in d.items(): print(k,v) 运行结果:

2.集合 set 集合和列表很相似

2.1 集合与列表的不同点 集合只能存储不可变对象集合中存储的元素是无序的(无序性)集合不能出现重复的元素(互异性) 2.2 使用{}来创建集合 示例:s = {1,2,4,2,89,45,3,65} print(s, type(s)) s = {[1,3,2],(5,6,7)} print(s, type(s)) 运行结果: 2.2 set():可将序列和字典转换成集合 示例:s = set([1,2,4,3,8,4]) print(s,type(s)) s = set({'name':'jerry','age':18}) print(s,type(s)) s = set([1,2,4,3,8,4],[12]) print(s,type(s)) 运行结果: 示例s = {} # 创建字典 print(s,type(s)) s = set() # 创建空集合 print(s,type(s)) 运行结果: 2.3 len():获得集合元素中的个数 示例:s = set([1,2,4,3,8,4]) print(s,type(s)) print(len(s)) 运行结果: 2.4 add():向集合中添加元素 示例:s = set() s.add(4) print(s,type(s)) s.add(4) print(s,type(s)) 运行结果: 2.5 update():将一个集合内的元素添加到另一个集合内 示例s = set() # 用set()创建空字典 s.add(4) print(s,type(s)) s1 = set('hello') s.update(s1) print(s) 运行结果: 2.6 pop():随机删除集合中的一个元素,一般都删除最后一个元素 示例:print(s) print(s.pop()) print(s) 运行结果: s = {'o', 'l', 'h', 4, 'e',1,5,6} s = set() print(s) s.pop() 运行结果: 2.7 remove():删除集合中指定的元素 示例:s = {'o', 'l', 'h', 4, 'e',1,5,6} print(s) s.remove('o') print(s) s.remove(7) print(s) 运行结果: 2.8 clear():清空集合print(s) s.clear() print(s)

3.集合的运算

3.1 & 交运算

示例s1 = {1,2,3,4,5} s2 = {3,4,5,6,7} print(s1 & s2) # 运行结果: {3, 4, 5}

3.2 | 并运算

示例s1 = {1,2,3,4,5} s2 = {3,4,5,6,7} print(s1 | s2) # 运行结果: {1,2,3,4,5,6,7}

3.3 - 差运算

示例s1 = {1,2,3,4,5} s2 = {3,4,5,6,7} print(s1 - s2) # 运行结果: {1,2}

3.4 异或运算 ^

示例s1 = {1,2,3,4,5} s2 = {3,4,5,6,7} print(s1 ^ s2) # 运行结果: {1,2,6,7}

3.5 <= 检查一个集合是否是另一个集合的子集

示例s1 = {4,5} s2 = {3,4,5,6,7} print(s1 <= s2) # 运行结果: True

3.6 < 检查一个集合是否是另一个集合的真子集

示例s1 = {4,5} s2 = {3,4,5,6,7} print(s1 < s2) # 运行结果: True

3.7 >= 检查一个集合是否是另一个集合的超集

示例s2 = {4,5} s1 = {3,4,5,6,7} print(s1 >= s2) # 运行结果: True

3.8 > 检查一个集合是否是另一个集合的真超集

示例s2 = {4,5} s1 = {3,4,5,6,7} print(s1 > s2) # 运行结果: True

4.函数

4.1 函数的简介 函数是一个对象 (对象是内存中用来存放数据的一块区域)函数用来保存一些可执行的代码 ,并且可以在需要时,对这些语句进行多次调用语法 示例def f(): print('hello,world') f() f() 运行结果: 函数名必须符合标识符的规范(可以包含字母、数字、下划线但是不能以数字开头)print 是函数对象 ,print() 是调用函数print('f =',f) # f = <function f at 0x000001F693981EA0> 函数在内存中的地址 4.2 函数的参数 形参(形式参数)定义形参就相当于在函数内部声明了变量,但是并不是赋值 示例def f(a): print('a=',a,'id=',id(a)) b = 3 print('函数外b:',id(b)) f(b) 运行结果: def f(a): # a 指向了b=3 a += 1 # a 指向了新对象 a+1 =4 print('a=',a,'id=',id(a)) b = 3 print('函数外b:',b,id(b)) f(b) 运行结果: 实参(实际参数)指定了形参,那么在调用函数时必须时必须传递实参,实参将会赋值给对应的形参,简单来说有几个形参就要有几个实参示例:def f(a,b): print('a=',a,'id=',id(a)) print('b=',b,'id=',id(b)) b = 3 print('函数外b:',id(b)) f(b) 运行结果: 4.3 函数的参数传递方式 定义参数时,可以为形参指定默认值。指定了默认值以后,如果用户传递了参数则默认值不会生效。如果用户没有传递,则默认值就会生效。默认参数必须放在位置参数的后面,否则报错。 示例:def fn(a,b,c=0): print(a,b,c) fn(1,2) fn(1,2,3) 运行结果: 位置传参:位置参数就是将对应位置的参数赋值给对应位置的形参 示例:def f(name,age,job): print('name=',name) print('age=',age) print('job=',job) f('john',43,'职业经理') # 参数位置正确 print() f('jojn','职业经理',43) # 错误的参数位置 运行结果: 关键字传递:关键字参数可以不按照形参定义的顺序去传递,而根据参数名进行传递 指定参数名的参数就叫关键参数,但记住一个要求就是,关键参数必须放在位置参数(以位置顺序确定对应关系的参数)之后。 示例:def f(name,age,job): print('name=',name) print('age=',age) print('job=',job) f(age=33,name='小米',job='销售') # 关键字传参 运行结果: 混合使用位置参数和关键字参数的时候必须将位置参数写道关键字参数前面去。 示例:# 错误:SyntaxError: positional argument follows keyword argument # f(name = 'john',43,'职业经理') f('lee',43,job = '职业经理') # 关键字传参 运行结果: 4.4 实参的类型 可以是任意对象,python在传参时不会进行数据类型检查 示例:def fn(a): print('a =',a) def fn1(a,b,c): print(a,b,c) fn('10') fn(10) fn(None) fn(3.2) fn(fn1) 函数参数的一些小特点 示例:def fn(a): a = 200 print('a = ',a,'id(a)=',id(a)) a = 10 fn(a) print(a,id(a)) 运行结果: 总结:由程序运行结果可知,函数的实参是不可变类型的数据(10),在修改变量时,要创建一个新的对象,并将形参的引用引用指向新对象,而实参没改变。即id不同示例:def fn(a): a[1] = 500 print('a = ',a,'id(a)=',id(a)) a = [1,2,3] fn(a) print(a,id(a)) 运行结果: 总结:由以上程序可知,当函数的实参为可变类型时a=[1,2,3],因为可变类型变量特性,直接在原对象上修改,因为此时形参和实参都是指向同一个对象,所以,实参指向的对象自然就被修改了。Python中将类型分为可变类型和不可变类型 可变类型:列表,字典,集合不可变类型:int、float、string、tuple 总结:在修改该类型变量时是否产生新对象,如果是在原对象上进行修改,为可变对象,如果是产生新的对象,则是不可变对象
最新回复(0)