一、 三元运算
result = 值1 if 条件 else 值2
如果条件为真:result = 值1
如果条件为假:result = 值2
二、 Python2的bytes/str之别
Python3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分,文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。
Python 3 不会以任意隐式的方式混用str和bytes,正是这使得两者的区别特别清晰。你不能拼接字符串和字节包,也无法再字节包里搜索字符串,
也不能将字符串传入参数为字节的函数
三、 集合
集合是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
常用操作:
1 list_1 = [1,4,6,2,5,3,5,2,5,7,9] 2 list_1 = set(list_1) 3 print(list_1,type(list_1)) 4 #输出 5 #{1, 2, 3, 4, 5, 6, 7, 9}#集合是无序的,没有重复的数据 6 7 list_2 = set([23,54,23,4,2,2,56,4,6,36,7]) 8 print(list_1,list_2) 9 10 #交集11 print(list_1.intersection(list_2))12 13 #并集14 print(list_1.union(list_2))15 16 #差集 in list_1 but not in list_217 print(list_1.difference(list_2))18 19 list_3 = set([1,3,5])20 #子集21 print(list_3.issubset(list_1))22 23 #父集24 print(list_1.issuperset(list_3))25 26 #对称差集27 print(list_2.symmetric_difference(list_1))28 29 list_4 = set([99,98,97,100])30 print(list_3.isdisjoint(list_4))31 32 list1 = set([1,2,3,4,5,6,7])33 list2 = set([5,6,7,8,89,56])34 print(list1)35 print(list2)36 37 list1.add(345)#添加一项38 print(list1)39 list1.update([23,342,432])#添加多项40 print(list1)41 42 list1.remove(1)#删除一项43 print(list1)44 45 print(list1.pop())46 47 print(list1.discard(342))48 49 50 51 print("\n----------------------")52 print(list1 & list2) #交集53 print(list1 | list2) #并集54 print(list1 - list2) #差集 在list1中而不在list2中55 print(list1^list2) #对称差集'''
四、字符串操作
print("**************************************")name = "liu\tyankui"print(name.capitalize())print(name.count("l"))print(name.center(50,"-"))print(name.endswith('kui'))print(name.expandtabs(tabsize=30))print(name[name.find('y'):])name2 = "my name is {name}, and i am {year} old"print(name2.format(name = 'liuyankui',year = 26))print(name2.format_map({ 'name':'liuyankui','year':26}))print('ab123'.isalnum())print('liuYankui'.isalpha())print('1A'.isdecimal())print('1A'.isdigit())print('a 1A'.isidentifier())print(' '.isspace())print('my name if '.istitle())print('my name if '.isprintable())print('my name if '.isupper())print('+'.join(['1','2','3']))print(name2.ljust(50,'*'))print(name2.rjust(50,'#'))print(' \nliuyankui\n '.lstrip())print(' \nliuyankui\n '.rstrip())print(' \nliuyankui\n '.strip())p = str.maketrans("abcdefghk",'123456789')print('liuyankui'.translate(p))print('liuyalnkuiliyanlkui'.replace('l','L',2))print('liuyankuiliuyankui'.rfind('l'))print('liu+yan+kui'.split('+'))print('liuyankui'.zfill(50))print('*****************************************')#输出**************************************Liu yankui1--------------------liu yankui--------------------Trueliu yankuiyankuimy name is liuyankui, and i am 26 oldmy name is liuyankui, and i am 26 oldTrueTrueFalseFalseFalseTrueFalseTrueFalse1+2+3my name is {name}, and i am {year} old************############my name is {name}, and i am {year} oldliuyankui liuyankuiliuyankuiliuy1n9uiLiuyaLnkuiliyanlkui9['liu', 'yan', 'kui']00000000000000000000000000000000000000000liuyankui*****************************************
五、字典
字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
定义:
info = { 'stu1101': "alex", 'stu1102': "jack", 'stu1103': "bob",}
字典的特性:
- dict是无序的
- key必须是唯一的,天生去重
info = { 'stu1101': "TengLan Wu", 'stu1102': "LongZe Luola", 'stu1103': "XiaoZe Maliya",}print(info.values())print(info.keys())for key in info: print(key,info[key])info.setdefault("stu1106","alex")print(info)b = {1:2,3:4,"stu1107":"longze"}info.update(b)print(info)print(info['stu1101'])#print(info[0]) #错误info["stu1101"] = "武藤兰" #修改info["stu1104"] = "Cangjingkong" #增加print(info)info.pop("stu1101") #标准删除print(info)del info["stu1102"]print(info)info.popitem() # 随意删除一个
六、文件操作
对文件操作流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
操作代码:
#window系统下打开文件默认编码'gbk',python默认utf-8 #读文件 f = open("yersterday",mode='r',encoding='utf-8')#打开文件,将文件句柄赋值给f,默认以读模式打开文件 #print(f.read()) f.close() #写文件 f2 = open("yersterday2",mode='w',encoding='utf-8')#以w模式打开,新建一个文件,然后再里面写内容 f2.write("我爱北京天安门\n") f2.write("天安门上太阳升\n") f2.close() #追加append f3 = open("yersterday3",mode='a',encoding='utf-8')# a为append,不能读,可以写 #append模式下,若文件名已存在,则在末尾追加内容,若文件不存在,则新建一个文件,然后写内容 f3.write("123123456\n")# f3.write("123123456\n") f3.close()
1 # f = open('test1',mode='r',encoding='utf-8') # 只读 2 # content = f.read() 3 # print(content) 4 # f.close() 5 6 # f = open("e:\\test1.txt", mode='rb') # 7 # content = f.read() 8 # print(content) 9 # f.close()10 11 # f = open('test1',mode='r+',encoding='utf-8') # 读写12 # content = f.read()13 # print(content)14 # f.write('11111111')15 # f.close()16 17 # f = open('test1',mode='r+',encoding='utf-8') # 读写18 # f.write('11111111') #先写的话,从位置0处开始覆盖19 # content = f.read()20 # print(content)21 # f.close()22 23 # f = open('test1',mode='rb')24 # content = f.read()25 # print(content)26 # f.close()27 28 # f = open('test1',mode='w',encoding='utf-8') # 只写,没有则新建,有则清除后再写29 # f.write('留言亏')30 # f.close()31 32 # f = open('test1',mode='wb')33 # f.write('留言sadfs亏'.encode('utf-8'))34 # f.close()35 36 # f = open('test1',mode='w+',encoding='utf-8') # 写读,文件不存在则新建,存在则清除内容后再写37 # f.write('留言亏') #38 # f.seek(0)39 # print(f.read())40 # f.close()41 42 # f = open('test1',mode='w+',encoding='utf-8') # 写读,没有输出,没有则新建,有则先清除内容43 # f.seek(0)44 # print(f.read())45 # f.write('留言亏')46 # f.close()47 48 # f = open('test1',mode='a',encoding='utf-8') # a模式,可追加,不可读49 # f.write('\nasdfkljs')50 # f.seek(0)51 # f.close()52 53 # f = open('test1',mode='a+',encoding='utf-8') # ‘a+'模式,可追加,可读54 # f.write('\nasdfkljs')55 # f.seek(0)56 # print(f.read())57 # f.close()58 59 # f = open('test1',mode='ab')60 # f.write('\nasdfkljs'.encode('utf-8'))61 # f.close()
打开文件的模式有:
- 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