一、鸡汤

1.提高自我修养

2.人丑就要多读书

3.多走走,开拓眼界

二、目录:

1.列表、元组操作

2.字符串操作

3.字典操作

  • dict是无序的
  • key必须是唯一的

4.集合操作

集合是一个无序的,不重复的数据组合,它的主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集、子集、对称差集(反向差集)等关系

5.文件操作

 文件操作流程:

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件 

 文件操作模式:

  • 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)
列表代码

相关文章:

  • 2021-10-20
  • 2021-07-26
  • 2022-01-10
  • 2022-02-06
  • 2022-12-23
  • 2022-12-23
  • 2022-01-19
  • 2021-12-12
猜你喜欢
  • 2021-09-17
  • 2022-12-23
  • 2021-08-27
  • 2022-12-23
相关资源
相似解决方案