set集合
set集合是无序的,不重复的集合,有增加,删除,并集,交集,差集等方法.
1 s = set() 默认创建空集合 2 s = {} 和字典重和(默认是字典) 3 4 se.add(44) #添加元素,只能一个 5 se.update(be) #更新,可以多个,或列表 6 7 abc = se.pop() #移除并赋值(无序不一定删除哪个) 8 se.discard(11) #移除,没有,不报错 9 se.remove(44) #移除,没有,报错 10 11 ret = se.difference(be) #差集se减be,两者都有不输出 12 se.difference_update(be) #找到se中存在的be中不存的并更新自已 13 14 ret = se.intersection(be) #交集,返回两个集合都有的元素 15 se.intersection_update() #交集,更新 16 17 se.isdisjoint(be) #判断有没有交集有True 18 se.issubset(be) #判断se中包含be(be是不是se的子集) 19 se.issuperset(be) #se是不是be的子集 20 21 ret = se.symmetric_difference() #对衬差集 22 ret = se.symmetric_difference_update() 23 ret = se.union(be) #并集,合一块
三元运算:
三元运算简单的if运算
name = num1 if 条件 else num2 #如果条件为真name等于num1反之num2
数字和字符串
对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址
拷贝列表元组字典
浅拷贝只是把列表,元组,字典的第一导拷贝一份,其它的不变
对于列表,元组,字典深拷贝,是将除底层数据(数字,字符串)之外的所有结构全部拷贝.
python 函数
定义函数
def name(形参) : #定义函数 pass
普通参数: 只能按顺序接收,每一个形参接收一个实参,少了多了都不行传实参时写上形参的名=实参,可以不按顺序传.
默认参数: 形参可以有默认值,没有实参形参就使用默认值,放到参数表的最后
动态参数*a: 实参(11,22,33,44,55,\'abcd\',[1,3],{1:3,3:9}) 接收到会组成元组如果实参是列表,元组或字符串,想直接传过去列表名前加*即可
动态参数**a: 实参(k1=11,k2=22,k3=33)接收到会组成字典如果想用字典名把字典传过去前面加**即可.
全局变量 在代码块中可直接读取全局变量,但不能修改.要修改全局变量必须加global 关健字(全局变量名一般大写)
局部变量 仅仅在代码块中使用一般小写
def a11(a,b) : #普通参数 pass def a22(a,b=None) : #b为默认值的参数,如果没有传实参,会使用默认值 pass def a33(*a) : #动态参数可接收列表,元组,字符串(1,2,3,4);[\'df\',\'df\',\'ef\'].想直接传对象名要加*号 pass def a44(**a) : #动态参数可接收字典(\'k1\':123,\'k2\':234) 要传字典名前加** pass
寻找差异
old_dict = { \'#1\' : 11, \'#2\' : 22, \'#3\' : 100, } new_dict = { \'#1\' : 33, \'#4\' : 22, \'#7\' :100, } old_set = set(old_dict.keys()) new_set = set(new_dict.keys()) del_set = old_set.difference(new_set) add_set = new_set.difference(old_set) update = old_set.intersection(new_set) # del old_set for i in del_set : del old_dict[i] for i in add_set : old_dict[i] = new_dict[i] for i in update : old_dict[i] = new_dict[i] for k,i in old_dict.items() : print(k,i)
写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
def jishu(string) : num = 0 zm = 0 kg = 0 qt = 0 for i in string : if i.isalpha() : zm += 1 elif i.isdigit() : num += 1 elif i.isspace() : kg += 1 else : qt += 1 return (num,zm,kg,qt) raw = input("请输入含数字字母空格的字符串...") pri = jishu(raw) print("数字%d 字母%d 空格%d 其它%d"%(pri[0],pri[1],pri[2],pri[3]))
写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def paduan(*list_name) : if len(list_name) > 5 : return True else : return False li = [1,2,3,4,5,6,7,] li2 = [33,44,55,66,] st = \'abcdefghigklmnopqrstuvwxyz\' print(paduan(*li)) print(paduan(*li2)) print(paduan(*st))
写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
def jishu(string) : num = 0 zm = 0 kg = 0 qt = 0 for i in string : if i.isalpha() : zm += 1 elif i.isdigit() : num += 1 elif i.isspace() : kg += 1 else : qt += 1 return (num,zm,kg,qt) raw = input("请输入含数字字母空格的字符串...") pri = jishu(raw) print("数字%d 字母%d 空格%d 其它%d"%(pri[0],pri[1],pri[2],pri[3]))
写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def two(*lis) : if len(lis) >= 2 : new_lis =lis[:2] return new_lis else : return None de = (112,33,556,7,78) print(two(*de))
写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
#6、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。 def jishu(*lis) : ret = [] for i in range(1,len(lis),2) : ret.append(lis[i]) return ret de = (1,3,5,6,4,3,3,2,5,6,7,4,4,2,) print(jishu(*de))
写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def dic(**abk) : new_dic = {} for k,i in abk.items() : if type(i) == str and len(i) >= 2 : new_dic[k] = i[:2] elif type(i) == list and len(i) >= 2 : new_dic[k] = i[:2] return new_dic di = {"k1": "v1v1", "k2": [11,22,33,44], "k24": [11,22,33,44]} print(dic(**di))