Python之路——Python基础二
一、 三元运算
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} <class 'set'> #集合是无序的,没有重复的数据 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_2 17 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 yankui 1 --------------------liu yankui-------------------- True liu yankui yankui my name is liuyankui, and i am 26 old my name is liuyankui, and i am 26 old True True False False False True False True False 1+2+3 my name is {name}, and i am {year} old************ ############my name is {name}, and i am {year} old liuyankui liuyankui liuyankui liuy1n9ui LiuyaLnkuiliyanlkui 9 ['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()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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