python_day3
一. 集合操作
- 去重,把一个列表变成集合,就去重了
- 关系测试 ,测试两组数据之前的交、差、并、关系
1 #assemble 去重 关系测试 2 3 list1=[1,2,3,4,5,6,2,3] 4 list2=[3,4,5,6,7,8,7,8] 5 list3=set([1,2,5]) 6 list4=set([1,2,3,4,5,6,7,8,9]) 7 8 list1=set(list1) #变成集合后就自动去重 9 list2=set(list2) 10 11 #交集 intersection 12 print(list1 .intersection(list2)) 13 print(list1 & list2) 14 15 #并集 union 16 print(list1.union(list2)) 17 print(list1 | list2) 18 19 #差集 difference 20 print(list1.difference(list2)) 21 print(list1 - list2) # in list1 but no in list2 22 print(list2 - list1) # in list2 but no in list1 23 24 #对称差集 symmetric difference 25 print(list1.symmetric_difference(list2)) 26 print(list1 ^ list2) #把两个集合都重复的去掉 27 28 #子集 issubset 29 print(list1.issubset(list4)) #list1是list4的子集 30 31 #父集 issuperset 32 print(list4.issuperset(list1)) #list4是list1的父集 33 34 list1.add(123) #在集合中添加一项 35 list2.update([12,34]) #在集合中添加多项 36 print(list1) 37 print(list2) 38 39 list3.remove(5) #删除一项 40 print(list3) 41 42 43 print(len(list4)) #集合的长度 44 45 print(5 not in list3) #5不在集合3中?
二.文件操作 (重点!)
1 #Author : Felix Li 2 # 文件的操作 3 4 #基础操作 5 6 #f=open("yesterday","r",encoding="utf-8") #文件句柄 7 8 #f.write("\n--------------------\n我爱济南!\n") 9 #data=f.read() 10 #f.close() 11 #print(data) 12 13 14 15 ''' 16 17 #高效 的写法 打开文件,读取文件 18 19 f=open("yesterday","r",encoding="utf-8") 20 21 count=0 22 for line in f: #一行行的读 ,内存里只有一行代码 ,f变成了迭代器 23 if count== 9: 24 print("------我不打印这一行!--------") 25 count+=1 26 continue 27 print(line) 28 count += 1 29 30 31 32 33 #low loop 34 35 for index,line in enumerate(f.readlines()): #把文件变成一个列表 适合读小文件 36 if index == 9: 37 print("------我不打印这一行") 38 continue 39 print(line.strip()) 40 41 for i in range(5): #读前五行 42 print(f.readline()) 43 44 #print(f.encoding) #打印文件编码 45 46 47 48 49 import sys,time #进度条 50 for i in range(50): 51 sys.stdout.write(">") 52 sys.stdout.flush() 53 time.sleep(0.1) 54 55 56 57 f=open("yesterday","r+",encoding="utf-8") 58 print(f.readline()) 59 print(f.readline()) 60 print(f.readline()) 61 print(f.readline()) 62 print(f.tell()) 63 f.write(".............") 64 print(f.readline()) 65 '''
三.字符编码与转码
ASCII只能存在英文或者特殊字符

1 #Author : Felix Li 2 3 import sys 4 print(sys.getdefaultencoding()) 5 6 s="我爱济南" 7 print(s) 8 s_gb2312=s.encode("gb2312") #把unicode转成gb2312 9 print(s_gb2312) 10 11 gb2312_to_unicode=s_gb2312.decode("gb2312") 12 print(gb2312_to_unicode) #把gb2312转成unicode 13 14 gb2312_to_utf8=s_gb2312.decode("gb2312").encode("utf_8") 15 print(gb2312_to_utf8) #把gb2312转成utf8
py3中 的 encode还会把string--->bytes类型
四.函数与函数式编程
1、 编程方法:
- 面向对象 类 class
- 面向过程 过程 def
- 函数式编程 函数 def
2、函数的优点
- 可扩展
- 可减少重复代码
- 程序易维护 ,保持一致性
3. 形参与实参
非固定参数
1 #Author : Felix Li 2 3 ''' 4 def text1(): 5 # text1 6 print("函数式编程输出") 7 return 0 8 print("出不来") 9 text1() 10 x=text1() 11 print(x) 12 13 14 def text2(x,y,z): #形参和实参 15 print(x+2) 16 print(y/2) 17 print(z*x) 18 19 text2(2,15,3) 20 21 22 #*args:接受N个位置参数,转化成元组 23 24 def test3(x,*args): 25 print(x) 26 print(*args) 27 test3(1,2,3,4,5,6) 28 29 ''' 30 31 32 33 34 #**kwargs:把N个关键字参数,转成一个字典的方式 35 36 def test4(name,age=24,*args,**kwargs): 37 print(name) 38 print(age) 39 print(args) 40 print(kwargs) 41 test4('felix',45,50,60,sex="man",ars='山东省')
4.默认参数
def test(x,y=2)
print(x)
print(y)
test(1)
#默认参数的特点:调用函数的时候,默认参数非必须传递
默认参数的用途: 默认安装值
5、局部变量,全局变量
列表 字典 集合 类 都可以 局部 改 全局
6、递归函数 (常用)
特点:
- 必须有一个明确的结束条件
- 每次进入更深一层时,问题规模比上次递归应该减少
1 #Author : Felix Li 2 ''' 3 递归特性:(recursion) 4 5 1. 必须有一个明确的结束条件 6 7 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 8 ''' 9 10 # def rec(n): 11 # print(n) 12 # if int(n/2)>0: 13 # return rec(int(n/2)) 14 # print("-->",n) 15 # rec(10)
7、高阶函数
1 def calc(a,b,f): 2 return f(a)+f(b) 3 4 add=calc(2,-3,abs) 5 print(add)

浙公网安备 33010602011771号