Day18智能体测开python

Day18智能体测开python 集合# 集合 1)set() {} 2集合中的元素是单个元素不是键值对 3无序的不能重复的 4可变的增删改 5集合中的元素类型是不可变的 s set() print(type(s))#class set s {3,44,21,5,25,67,7,78,77} # s {3,4,4,4,6,7,2,1,55,77,[4,5,6,7]} # 子列表不能作为集合的元素 print(s) # 增 s.add(66) print(s) # 删除 # 根据元素本身去删除 s.remove(7) print(s) v s.pop() # 随机删除一个元素 print(v) print(s) # s.clear() # 获取集合的长度 print(len(s)) # 遍历 for i in s: print(i) # 对列表中的元素进行去重 li [5,4,3,21,3,5,6,55,77,8,88,2,2,3,4,6] # 方式1 优点不改变列表的元素顺序 缺点逻辑复杂 # 创建一个空的新列表 lnew[] for i in li: # 往空列表中存储数据 if i not in lnew: # 判断新列表中是否含有该元素 lnew.append(i) print(lnew) # 方式2 缺点源列表的顺序改变了 优点逻辑简单 # 将列表转变成集合 s2 set(li) # 集合转变成列表 l list(s2) print(l)函数# 函数 目的:提高代码的复用率可以重复执行一些有规律的代码 函数的定义格式 def 函数名称(参数名1,参数名2...): 函数体有规律的代码 函数的调用函数名(参数值1,参数值2...) 1函数的参数可以是0-多 2函数体执行必须是调用函数才会执行 3函数体可以加return关键词 1)return后面可以跟一个数据 2)return后面可以不加任何的数据代表返回None,可以省略 3)return代表函数执行结束了 4python提供了一些内置的函数print() int() list() set ord() min() max() 5函数的调用必须写在函数的定义下面 print(min(2,3,4,52,22,11,-9)) # 自定义函数 1-100的和 def print_sum(): sum 0 for i in range(1,101): sum i print(sum) # return None # return # 调用函数 print_sum() # n-m的和 def print_sum1(n,m): sum 0 for i in range(n,m1): sum i print(sum) # 调用函数时给n和m赋值 定义函数时参数和调用函数时的参数顺序类型个数都一致 print_sum1(3,40) print_sum1(2,39) def print_sum2(n1:int,m1:int):# 规定了参数的数据类型但是调用时参数类型只作为参考不能限定因为python是弱类型的语言 计算某个范围内地函数的和 :param n: 开始值 :param m: 结束值 :return: sum 0 for i in range(n1, m1 1): sum i print(sum) r print_sum2(3,30) print(r) #None # 返回函数中的值目的可以在函数外使用该值 def get_sum(): print(---------------) sum 0 for i in range(1, 101): sum i return sum # 调用函数并且获取返回值 s get_sum() sum get_sum() print(f使用和去进一步计算{s1}) def abc(): for i in range(1,100): if i 9: # break return print(i,-----------) abc() 函数体可以使用pass替代 参数在函数定义时的参数叫形参函数调用时的参数叫实参实际参数 1位置参数形参和实参的顺序、类型、个数必须相同 2默认参数参数如果没有提供实参参数按默认值走 3可变参数实参的值可以是0-多个 4关键字参数字典参数 def abc(n,m,o): pass # 空语句 # if 67: # pass # else: # pass abc(4,5,6) # 有默认值的参数 def print_info(name,age,sex男,height178.98):# 如果参数有默认值必须设置在参数列表的后面 print(fname{name},age{age},sex{sex},height{height}) print_info(tom,23,女) print_info(tom,23) print_info(tom,23,height167.98) # 如果空掉其中一个参数可以使用参数名去赋值 print_info(name tom,age23,height167.98,sex女) # 如果空掉其中一个参数可以使用参数名去赋值 print_info(age23,name tom,height167.98,sex女) #如果实参的传递加上参数名可以打乱顺序 a (lucy,7,女,123.98) print_info(*a) # 解包通过*对列表中的元素进行解包逐个将列表的元素传递给参数 b [12,lily,156.78] age,name,height b # 解包 print_info(name,age,heightheight) # *参数名代表是一个可变参数,传递的参数可以是0-多个并且在函数体中打包成一个元组处理 # **参数名代表是一个可变关键字参数,传递的参数可以是0-多个并且在函数体中打包成一个字典处理 1*参数名一般定义为 *args **参数名一般定义为**keys 2python提供了一些可变参数的函数print() min() max() 3参数为*args,**keys可以代表通配所有的参数了 4考点* 和**的区别 *args和**keys的区别 def get(n,*args,**keys): print(ff{n}m{args},k{keys}) get(45) get(45,8) get(45,8,9) get(45,8,9,tom,nametom) print(min(tom,lucy,lily)) def get1(*args,**keys): print(fm{args},k{keys}) get1() get1(3) get1(3,4,5) get1(3,4,5,kafa,namet,age50)变量# 变量 根据变量的作用域范围全局变量和局部变量 全局变量直接定义在文件中的变量 局部变量定义在函数中或分支循环中的变量 a 99 c 22 def abc(n,m):# 参数也是局部变量 # 定义局部变量 b 8 a 77 # 和全局变量同名的局部变量 print(n,m) print(fa{a},b{b},c{c}) abc(4,5) print(a) # 在函数中可以定义全局变量使用global关键词定义 def get(): global d # 声明全局变量 d 89 f tom # global e 8 print(f) get() # 调用函数执行设置全局变量的代码 print(d)lambda表达式# lambda 一些简单的函数可以通过lambda表达式进行简化定义为一个没有函数名的函数 lambda没有函数名的函数 def power(x): return x**2 b lambda x:x**2 # b变量代表一个函数 b1 lambda a:a**2 # b变量代表一个函数 print(b(8)) # 函数体中有分支if else def abs(x): if x0: return x else: return -x c lambda i:i if i0 else -i print(c(9)) print(c(-9)) def add(x,y9): return xy d lambda x,y:xy d1 lambda x,y9:xy print(d(4,51)) print(d1(4,56)) print(d1(4)) print(type(d1)) #class function课后作业A {1, 2, 3, 4, 5} B {4, 5, 6, 7, 8} # 获取两个集合的交集 def Intersection(A,B): C set() for i in A: if i in C: continue for j in B: if i j: C.add(i) print(两个集合的交集为,C) # 并集 def Union(A,B): for k in B: if k not in A: A.add(k) print(两个集合的并集为,A) # 获取A中有但是B中没有的 def ishave(A,B): D set() for i in A: if i not in B: D.add(i) print(A中有但是B中没有,D) # 检查A是否是B的子集 def issubset(A,B): s_subset True # 遍历A每一个元素只要有一个不在B就不是子集 E True for num in A: if num not in B: E False break if E: print(A 是 B 的子集) else: print(A 不是 B 的子集) # 每个小题定义一个函数并且调用 Intersection(A,B) Union(A,B) ishave(A,B) issubset(A,B) # 从列表中找出只出现一次的元素 不通过count()方法查找 l[1,2,4,5,9,8,7,1,2,3,5,4,6] def one(l): l_new[] for i in l: count 0 for j in l: if i j: count 1 if count 1: l_new.append(i) print(l_new) one(l)Python 四大容器总结1. 列表 list []特性有序、元素可重复、可变支持下标索引、切片操作增 append / 删 pop / 改下标赋值缺点去重麻烦判断元素是否存在效率低适用动态有序数组、需要频繁修改的数据2. 元组 tuple ()特性有序、元素可重复、不可变支持索引切片操作创建后不能增删改仅可读优点内存占用小、可哈希能作为字典 key适用固定不变数据、函数多返回值3. 字典 dict {key:value}特性3.7 插入有序键唯一、值可重复可变规则key 必须不可变类型数字 / 字符串 / 元组列表集合不能当键操作通过键存取、新增键值、修改 value适用键值映射数据存储对象信息4. 集合 set {}特性无序、自动去重、可变无下标不能索引独有运算交集、并集、差集、子集判断操作add 添加、remove 删除适用列表去重、对比两组数据关系、成员快速判断*args和**keys的区别*参数名代表是一个可变参数,传递的参数可以是0-多个并且在函数体中打包成一个元组处理**参数名代表是一个可变关键字参数,传递的参数可以是0-多个并且在函数体中打包成一个字典处理对列表中的元素进行去重li [5,4,3,21,3,5,6,55,77,8,88,2,2,3,4,6] # 方式1 优点不改变列表的元素顺序 缺点逻辑复杂 # 创建一个空的新列表 lnew[] for i in li: # 往空列表中存储数据 if i not in lnew: # 判断新列表中是否含有该元素 lnew.append(i) print(lnew) # 方式2 缺点源列表的顺序改变了 优点逻辑简单 # 将列表转变成集合 s2 set(li) # 集合转变成列表 l list(s2) print(l)