当前位置: 首页 > 科技观察

Python基础全集:集合用法、文件操作、字符编码转换、函数

时间:2023-03-12 12:38:25 科技观察

人工智能时代,是时候学习python了!既然确定要学Python,就要从基础开始一步步学起~!我们来看一下基础知识集(Set),它的功能集是一个没有重复元素的无序序列。list={1,3,6,5,7,9,11,3,7}#定义采集方式list1=set([1,3,6,5,7,9,11,3,7])#定义集合方法2list2=set()#定义一个空集合print(list1,list)#打印后可以看到集合中的元素已经自动去重print(3inlist)#判断一个元素是否在collection,returnboolvalueprint(20notinlist1)#判断一个元素是否不在集合中,returnboolvaluelist1.add(99)#添加新元素list1.update([10,20,30,2])#添加多个list1.remove(3)#删除一个元素,如果元素不存在,报错print(list1.discard(8))#删除一个元素,如果元素不存在,什么都不做print(len(list1))#计算集合中的元素个数print(list1.pop())#从集合中随机弹出一个元素list.clear()#清空集合的操作list1=set([1,3,6,5,7,9,11,3,7])list2=set([2,4,6,8,3,5])print(list1,list2)#intersectionprint(list1.intersection(list2))print(list1&list2)#unionprint(list1.union(list2))print(list1|list2)#differencesetprint(list1.difference(list2))print(list1-list2)#symmetricdifferencesetprint(list1.symmetric_difference(list2))print(list1^list2)#是否子集是否为父集list3=set([9,11])print(list3.issubset(list1))print(list1.issuperset(list3))#如果两个集的交集isemptyreturntruelist4=set([20,30])print(list1.isdisjoint(list4))print(list1.isdisjoint(list2))文件(File)操作在开发中经常有读写文件的需求,而相关代码实现如下:fileopenmodefile读操作,写操作,追加操作,逐行读取文件#read直接读取文件全文f=open('test','r',encoding='utf-8')#filehandledata=f.read()print(data)#write写入文件f=open('test1','w',encoding='utf-8')f.write('我爱北京天安门,太阳从天安门升起')#append向文件添加内容***f=open('test1','a',encoding='utf-8')f.write('呵呵嘿')#loop按行读取文件#highbigger作为迭代器读取文件打印一行只缓存一行在内存中f=open('test','r',encoding='utf-8')count=0forlinf:ifcount==9:print('--------')count+=1continueprint(l.strip())count+=1#lowloop读取文件全部内容Fetch到内存,效率低f=open('Sonnet','r',encoding='utf-8')forindex,lineinenumerate(f.readlines()):ifindex==9:print('-----------')continueprint(line.strip())filefunctionf=open('test','r',encoding='utf-8')#filehandlereadmodeopenfileprint(f.tell())#获取当前光标位置print(f.readline())print(f.readline())print(f.tell())print(f.readline())f.seek(10)#jump把光标转到the第10个字符print(f.readline())print(f.encoding)#获取文件编码print(f.fileno())#idon'tknowwhatitisprint(f.isatty())#判断文件是否为ttyTerminalprint(f.readable())#判断文件是否可读print(f.writable())#判断文件是否可写print(f.seekable())#判断文件是否为可跳转游标(tty不能跳转f.flush()#以写模式打开文件时,系统会调用一次io,而不是写一句。如果需要及时刷新硬盘中的文件内容,可以调用该函数数f.close()#关闭文件print(f.closed)#判断文件是否关闭文件修改#文件修改直接修改文件本身比较困难。您可以将修改写入另一个文件,并在必要时将其写回文件本身f=open('test','r',encoding='utf-8')f_new=open('test.bak','w',encoding='utf-8')forlineinf:if'我有千千万万个梦'inline:line=line.replace('我梦过千百次','我不想梦千遍')f_new.writelines(line)f.close()f_new.close()a进度条例子用来理解flush函数的机制。本例可以实现进度条效果importsysimporttimef=open('Sonnet1','w',encoding='utf-8')#Filehandlewrite方式打开一个文件会新建一个文件如果同名如果文件存在,会直接覆盖foriinrange(10):sys.stdout.write('#')sys.stdout.flush()time.sleep(0.2)字符编码转换字符编码转换最重要的一点,记住unicode是第一种编码如果unicode既不是目标编码也不是原始编码,那么任意两种编码都需要通过unicode(见下图)。需要注意的是python默认编码是ASCII,python3默认编码是unicode。python3中的encode在转码的时候会把string转成bytes,decode在decode的时候会把bytes转回string。函数函数是一段有组织的、可重用的代码,用于实现单个或相关函数。函数可以提高应用程序的模块化和代码的重用率。Python提供了许多内置函数(例如print());您也可以自己创建函数,即用户自定义函数。要用你想要的功能定义一个函数,你需要遵循以下规则:函数代码块以def关键字开头,后面是函数标识符名称和括号()。任何传入的参数和自变量都必须放在括号之间,可以用来定义参数。函数的第一行语句可以选择使用文档字符串——用于存储函数描述。函数内容以冒号开头并缩进。return[expression]终止函数,可选地向调用者返回一个值。不带表达式的return等同于返回None。需要补充的知识:函数参数、变量作用域、递归、高阶函数。