python学习(day3)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习(day3)相关的知识,希望对你有一定的参考价值。
1、集合的使用:
#1、集合的操作: list_1 = [1,4,5,7,3,6,7,9] list_1 = set(list_1)#创建集合 list_2 = set([2,6,0,22,66,8,4]) print(list_1,type(list_1),list_2) print(list_1.intersection(list_2))#取两集合的交集 print(list_1.union(list_2))#并集 print(list_1.difference(list_2))#差集 in list_1 but not in list_2 print(list_2.difference(list_1))#差集 list_3 =set([1,4,7]) print(list_3.issubset(list_1))#子集 print(list_1.issuperset(list_3))#父集 print(list_1.symmetric_difference(list_2))#对称差集 print("-------------") list_4 =set([5,6,8]) print(list_3.isdisjoint(list_4))#Return True if two sets have a null intersection print("运算符".center(50,‘-‘)) print(list_1 & (list_2))#并集 print(list_1 | (list_2))#并集 print(list_1 - (list_2))#差集in list_1 but not in list_2 print(list_1 ^ (list_2))#对称差集 print(list_1 ^ (list_2))#对称差集 print(list_1.add(999))#添加 list_1.update([888,777])#添加多项 print(list_1) list_1.remove(1)#指定删除 print(list_1) print(list_1.pop())#随机删除并返回 #list_1.remove()为空会报错 list_1.discard(888)#删除 print(list_1)
2、文件操作:
打开文件的模式有:
r,只读模式(默认)。
w,只写模式。【不可读;不存在则创建;存在则删除内容;】
a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
r+,可读写文件。【可读;可写;可追加】
w+,写读
a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
rU
r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
rb
wb
ab
f = open("Yesterday.txt",‘r+‘)#文件句柄,Yesterday.txt:文件名 data = f.read() print(data) print(f.write("123")) f = open("Yesterday.txt","r+",encoding="utf - 8") #data = f.readlines() #high bige count = 0 for line in f: if count==9: print(‘----我是分割线-----‘) count += 1 continue print(line) count += 1 print("1111111231231211111",f.tell()) f.close() f = open("Yesterday.txt",‘r+‘,encoding="utf - 8") print("11111111111111111111",f.tell())#tell() 方法返回文件的当前位置,即文件指针当前位置。 print(f.readline()) print(f.readline()) print(f.readline()) print(f.tell()) f.seek(0)#seek() 方法用于移动文件读取指针到指定位置。 print(f.readline()) print(f.encoding)#文件字符编码 print(f.fileno())#fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作。 print(f.name)#打印文件名 print(f.flush())#flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。 #一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。 f.close() f = open("Yesterday2.txt",‘r+‘) f.truncate(10)#truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则重置到当前位置。 f.close() #f = open("Yesterday2.txt",‘wb‘) #print(f.readline()) f = open("Yesterday2.txt",‘wb‘) f.write(‘hello binary\n‘.encode(encoding=‘utf-8‘)) f.close() ‘‘‘ #low loop for line in f.readlines(): print(line) ‘‘‘
2、1with语句:
import sys print(sys.getdefaultencoding())#打印系统默认编码 with open("Yesterday.txt",‘r‘,encoding="utf-8") as f, open("Yesterday2.txt",‘r‘,encoding="utf-8") as f2: for line in f: print(line)#with代码块执行完毕时,内部会自动关闭并释放文件资源
2、2文件修改:
f = open("Yesterday1.txt",‘r‘,encoding="utf-8") f_new = open("Yesterday2.txt",‘w‘,encoding="utf-8") for line in f: if "舌尖上的雨" in line: line = line.replace("舌尖上的雨","一二三四五")#replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 f_new.write(line) f.close() f_new.close()
3、字符编码:
# Author:deyi liu import sys print(sys.getdefaultencoding())#打印系统默认编码 s = "你好" s_gbk = s.encode("gbk") print(s_gbk) print(s.encode()) gbk_to_utf8 = s_gbk.decode("gbk").encode("utf-8") print(gbk_to_utf8)
# -*- coding:gbk -*- import sys print(sys.getdefaultencoding())#打印系统默认编码 s = "你好"#文件编码为gbk,但s = "你好"的编码为Unicode print(s.encode("gbk")) print(s.encode("utf-8")) print(s.encode("utf-8").decode("utf-8").encode("gb2312")) print(s.encode("utf-8").decode("utf-8").encode("gb2312").decode("gb2312"))
4、函数:
函数定义:
def test(x):#def定义函数关键字,test函数名,()内容定义形参 "The function definitions"#文档描述 x+=1#泛指代码块或程序处理逻辑 return x#return定义返回值
#定义函数 def func1(): "testing1" print("in the func1") return 0 #定义过程(没有返回值的函数) def func2(): "testing2" print("in the func2") x = func1() y = func2() print("from func1 return is: %s"%x) print("from func2 return is: %s"%y)
import time def logger(): time_format = ‘%Y-%m-%d %X‘#年月日时,%X 本地相应的时间表示 time_current = time.strftime(time_format)#time strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。 with open("a.txt",‘a+‘) as f: f.write(‘time is %s end action\n‘%time_current) def test1(): print("test1 starting action...") logger() def test2(): print("test2 starting action...") logger() def test3(): print("test3 starting action...") logger() test1() test2() test3()
#定义函数 def test1(): print("in the test1") def test2(): print("in the test2") return 0 def test3(): print("in the test3") return 1,‘hello‘,[‘alex‘,‘wupeiji‘],{‘name‘:‘alex‘} x = test1() y = test2() z = test3() print(x) print(y) print(z)
#定义函数 def test(x,y):#x,y形参 print(x) print(y) test(1,2)#1,2实参,与形参一一对应(位置参数调用) test(y=1,x=2)#与形参顺序无关(关键字调用) test(3,y=1)#关键字不能再位置参数前面
def test(x,y=2):#y=2默认参数,默认参数非必须传递 print(x) print(y) test(1) #test(1,3)
参数组:
def test(*args):#参数组,以*开头,接受N个位置参数,转换成元组的形式 print(args) test(1,2,3,4,5) test(*[1,2,3,4,5])#args=tuple([1,2,3,4,5]) def test1(x,*args): print(x) print(args) test1(1,2,3,4,5) def test2(**kwargs):#把n个关键字参数,转换成字典的形式 print(kwargs) print(kwargs[‘name‘]) print(kwargs[‘age‘]) print(kwargs[‘sex‘]) test2(name=‘alex‘,age=8,sex=‘F‘)#kwargs={‘name‘: ‘alex‘,‘age‘: 8, ‘sex‘: ‘N‘} test2(**{‘name‘: ‘alex‘,‘age‘: 8, ‘sex‘: ‘N‘})#kwargs={‘name‘: ‘alex‘,‘age‘: 8, ‘sex‘: ‘N‘} def test3(name,**kwargs): print(name) print(kwargs) test3(‘alex‘,age=8) def test4(name,age=8,*args,**kwargs):#参数组要放在后面 print(name) print(age) print(args) print(kwargs) test4(‘alex‘,age=3,sex=‘F‘,hobby=‘tesla‘)
def test4(name,age=8,*args,**kwargs):#参数组要放在后面 print(name) print(age) print(args) print(kwargs) logger("TEST4") def logger(source): print("from %s"%source) test4(‘alex‘,age=3,sex=‘F‘,hobby=‘tesla‘)
高阶函数:
def add(a, b, f): # abs() 函数返回数字的绝对值 return f(a) + f(b) res = add(3,-6,abs)# abs() 函数返回数字的绝对值 print(res)
5、局部变量:
school = "Oldboy edu."#全局变量 def change_name(name): global school#global声明全局变量 school = "asd"#局部变量 print("before change",name,school) name = "Alex Li"#这个函数就是这个变量的作用域 print("after change",name) name = "alex" change_name(name) print(name) print(school)
names = ["Alex","Jack","Rain"] def change_name(): names[0] = "金角大王"#字符串,整数不能再局部里面修改,列表,字典,集合,类的可以 print("inside func",names) change_name() print(names)
6、进度条:
import sys,time #sys.stdout.write("asd") #sys.stdout.write("asd")#不换行 for i in range(20): sys.stdout.write("#") sys.stdout.flush()#调用sys.stdout.flush()强制其“缓冲 time.sleep(0.1)
7、递归:
def calc(n): print(n) if int(n/2)>0: return calc(int(n/2)) print("->",n) calc(10)
以上是关于python学习(day3)的主要内容,如果未能解决你的问题,请参考以下文章