三元运算
age = 23 #就是if else的简单写法 a = age if age < 20 else 25
集合 set
#集合是无序切不重复的, #当对列表去重复的时候,可以直接使用 set(list),就将list转为set,并去除中间重复的 list = [1,2,3,4,5,5,6,7,8,9,1] s = set(list)
运行结果:可以发现将 list中重复的去掉,并且类型变成set,再使用list(set),转为list
集合操作
# Author:zylong set1 = set([1,2,3,4,5,5,6,7,8,9,1]) set2 = set([0,2,4,6,8,10]) #交集 print(set1.intersection(set2)) print(set1 & set2) #并集 print(set1.union(set2)) print(set1 | set2) #差集 print(set1.difference(set2)) print(set1 - set2) #对称差集,就是 用并集 - 交集 的结果 print(set1.symmetric_difference(set2)) print(set1 ^ set2) #是否是子集,父集 set1.issubset(set2) set1.issuperset(set2) #删除 set1.remove(1)#当元素不存在时报错 set1.discard(1)#不存在不报错 #增加 set1.add(10) #判断是否存在 print( 10 in set1) #修改 set1.update(set2) print(set1)
字符编码和解码
#python 内部编码是unicode #编码和解码,就是 --通过重甲unicode进行转换 #如果在文件头指定编码 #-*-coding:gbk-*- 这句话的意思是指,这个文件以什么编码解析,并不是文件中的内容以什么编码解析, # 文件中的内容还是以unicode编码,并且编码后都是字节 string = "你好" string_to_utf8 = string.encode("utf-8") string_utf8_to_gbk = string_to_utf8.decode("utf-8").encode("gbk").decode("gbk")#这句话最后转为的是unicode print(string_to_utf8) print(string_utf8_to_gbk)
文件操作
# Author:zylong #文件的增删改查 #使用with 这种方式,with结束时,程序自动关闭程序,就是调用f.close()方法 with open("复习.py",mode="r",encoding="utf-8") as f: "按行读取" for line in f: print(line) #open的打开模式 f = open("复习.py",mode="r",encoding="utf-8") #这个是只读模式,不能写,如果调用写的方法报错 # f1 = open("aa","w",encoding="utf-8") #这个w方式是创建新的文件,如果文件存在,则覆盖原先文件 f1.write("你好") f1.close() #在文件末尾追加 f = open("aa","a",encoding="utf-8") f.write("\n好的\n") f.close() #这个是读写模式打开,这种模式写,是在文件末尾追加 f = open("bb","r+",encoding="utf-8") print(f.tell()) print(f.readline())#读取文件指针所在的往后一行 打印的结果是“你好” print(f.tell()) f.seek(3)#这里不能设置 1,2,因为文件开头是中文,中文站三个字节,这里的是按字节位置的 print(f.readline())#打印的结果是 “好” f.write("\naaaa\n") f.close() #查找,就是使用循环,使用 for line in f:#这样的效率高,这个是一行一行的读 pass for line in f.readlines():#这种方式是将文件内容全部加载到内存中,当文件比较大的时候效率比较低 pass
函数:
# Author:zylong #函数定义:使用def 关键字,方法名,方法体 #没写返回值的,python默认返回 none def fun_test1(): print("第一个函数") #有返回值 def fun_test2(): return 0 #有参数 def fun_test3(x,y): print(x) print(y) #调用的时候,有两种调用方式 #1.形参[按照参数的位置,进行调用] fun_test3(1,2) #2.实参 fun_test3(y=2,x=1) #函数参数上有默认值 def fun_test4(x=4,y=5): print(x) print(y) #这种调用的时候,可以传参数,也可以不穿参数,当不传值时,使用默认值 fun_test4() #形参必须在实参前面 fun_test3(1,y=2); #不定参数,后面不定参数,python包装成一个元组 def fun_test5(x,*avgs): print(x) print(avgs) #调用有两种方式 fun_test5(10,11,12,13,14,15) fun_test5(10,*[11,12,13,14,15]) fun_test5(10,*(11,12,13,14,15)) # def fun_test6(x,**kvavgs): # print(x) # print(kvavgs) #这样调用会报错,因为第一个形式参数,已经给x赋值了,后面的 实参有给x赋值,所以报错,可以讲参数名换一下 #这种传递的是一个字典,是以实参方式,python封装成字典 def fun_test6(a,**kvavgs): print(a) print(kvavgs) fun_test6("a",x="b",y="c",z="d") #多返回值 def fun_test7(): return 0,"a",("b","c"),["d","e","e"],{"f","g"},{"name":"zhang","age":20} res = fun_test7() #这种将返回结果变成一个元组返回 print(res) #递归函数,函数自己调用自己 #递归函数必须有一下三个特别:1.有明确的结束条件,2每次进入更深一层,问题规模比上一次相应减少(下一层,使用上一层的结果)3递归效率不高 #求一个数,最终不能被2整除的余数 #当需要递归函数返回值的时候,调用递归的地方必须return ,这样才能把下层的结果返回给上层 def fun_recursive(n): if n % 2 != 0: return n else: return fun_recursive(n/2) n = fun_recursive(30) print(n) #高阶函数,就是函数的参数是个函数 def fun_HighOrde(x,y,f): print(f(x)+f(y)) fun_HighOrde(20,6,fun_recursive)
时间: 2024-09-29 23:33:10