一、鸡汤
1.提高自我修养
2.人丑就要多读书
3.多走走,开拓眼界
二、目录:
1.列表、元组操作
2.字符串操作
3.字典操作
- dict是无序的
- key必须是唯一的
4.集合操作
集合是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集、子集、对称差集(反向差集)等关系
5.文件操作
文件操作流程:
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
文件操作模式:
- 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
6.字符编码与转码
Python2中的字符串进行字符编码转换过程是:
- 字节串-->decode('原来的字符编码')-->Unicode字符串-->encode('新的字符编码')-->字节串
Python3中定义的字符串默认就是unicode,因此不需要先解码,可以直接编码成新的字符编码:
- 字符串-->encode('新的字符编码')-->字节串
三、练习
1.列表元组操作练习
#pycharm 5.0.3(python3.6) #定义一个空列表 names = [] print('打印空列表names:',names) #定义一个班级人员的列表 names = ['Alex','Felix','Fion','Susan'] #按下标取列表中的数据下标从0开始 print("取'Felix':",names[1]) #截取中间位置的人员 ,切片所取的位置包含其实位置,不包含结束位置(顾头不顾尾) print('切片_方法1_明确位置:',names[1:3]) print('切片_方法2_取末尾:',names[-1]) #从右开始往左数是-1,-2.。。 print('切片_方法3_取最后边:',names[-3:-1]) #如果要取后3个的话,写-1就不行了,只能取2个: print('切片_方法4_取最后边:',names[-3:]) #可以省略不写,这样就可以取多个了 print('切片_方法5_取前3:',names[0:3]) #起始位置可以写0,也可以忽略 print('切片_方法5_取前3:',names[:3]) #同上 print('切片_方法6_按步长:',names[0:-1:2]) print('列表的增删改查:'.center(40,'#')) names.append('Bob') #追加_末位最佳 print('追加_末位追加:',names) names.insert(1,'Jack') #追加_任意位置 print('追加_任意位置:',names) names[2] = 'Wulin' #修改,将列表下边是2的名称修改掉 print('修改:',names) names.remove('Wulin') #删除 print('删除_remove方式',names) del names[1] print('删除_del方式',names) print(names.pop()) #不带下标,删除最后一个并返回删除的值 print('删除_pop方式',names) #删除后的结果 print('查找_找下标:',names.index('Fion'))#查找人员索引位置,没有回报错 print('查找_找下标_借下标打印出名称:',names[names.index('Fion')]) #看似多此一举 names.insert(1,'Fion')#班级姓名重复的情况,可以统计重复的个数 print('统计重复个数:',names.count('Fion')) #清除列表clear name.clear names.reverse()#反转 print('反转:',names) names.insert(3,'4zhang') #插入数字开头的 names.insert(3,'!#woaini') #插入特殊字符开始的 names.sort()#排序 print('排序',names) names2 = [12,34,5] names.extend(names2)#将names2并入到name print('打印合并后的两个列表:',names) print('以下为浅复制相关'.center(50,'-'))#以下浅复制相关,需要记住这个特性,尽管用的较少 #列表中可以包含列表 names.insert(0,['age','grade']) #向列表中插入一个列表 #print('打印包含列表的列表:',names) names3 = names.copy()#后边用到,浅copy,复制一个列表出来 print('打印copy前的列表:',names) print('打印copy后的列表:',names3) names[0][0] ='sex' #修改列表中列表的值 names[5] ='Wo' #修改names列表中Susan的名称为Wo,然后对比复制前复制后列表值的变化 print('打印修改后的列表:',names) print('打印copy后的列表:',names3) #对比以上4个打印结果可以发现,列表中列表的值names和names3都被修改了,但是列表中的值只有names里边被修改了,这个叫浅copy #即只copy了第一层,由于列表中的列表只是个内存地址,所以修改names的列表中的列表的值后names3中的也跟着变了。 print('以下为深copy相关'.center(50,'-'))#一下深复制相关,不随便用,通常不需要随便复制一份(比如数据比较大的情况) import copy #此时需要用到copy模块 print('打印深copy前的列表:',names) names4 = copy.deepcopy(names) #调用copy模块的深copy names[0][0] = 'home' #修改列表中列表的值 print('打印深copy后的列表:',names) print('打印深copy后的列表:',names4) #可以发现列表没有变化 print('以下为列表的循环'.center(50,'-')) # for i in names: print(i) print('以下为浅复制的一个场景'.center(50,'-')) person = ['name',['saving',100]] ''' #3中浅copy方式 p1 = copy.copy(person) # p2 = person[:] #切片 p3 = list(person) #工厂函数 #浅copy什么情况下比较有用 ''' #有以下两个人,都基于person复制过来,两人有一个共同账号,如果一个少了50则另一个发现也少了50 p1 = person[:] p2 = person[:] p1[0]='Felix' p2[0]='Fiona' p1[1][1] =50 #公共账号少了50,那么两个人发现都少了50 print(p1) print(p2)