列表、元组操作
字符串操作
字典操作
集合操作
文件操作
字符编码与转码
1.列表、元组操作
(1)列表
列表是可变的(mutable)——可以改变列表的内容,这不同于字符串和元组,字符串和元组都是不可变的;列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
我们使用列表的方法无非就是:增删改查这4中方法
定义列表:
names=['chen','zi','ang']
列表的切片:用来取多个元素
1 下标从0开始排序,-1表示最后一个,在取得过程中取前不取后 2 >>> phones=['Iphone','Xiaomi','Sansumg','Meizu','Huawei'] 3 >>> phones[1:3] #取下标1到4之间的元素(包括1不包括4) "取首不取尾" 4 ['Xiaomi', 'Sansumg', 'Meizu'] 5 >>> phones[2:-1] #取下标2到-1之间的元素,不包括-1 6 ['Sansumg', 'Meizu'] 7 >>> phones[0:3] #phones[:3] 两者一样,0可以省略 8 ['Iphone', 'Xiaomi', 'Sansumg'] 9 10 有间隔的取元素: 11 >>> phones[0::2] #phones[::2] #每隔1个取一个
追加操作:这里用到的方法是append来实现追加
1 >>> phones 2 ['Iphone','Xiaomi','Sansumg','Meizu','Huawei'] 3 >>> phines.append("") 4 >>> phones 5 ['Iphone','Xiaomi','Sansumg','Meizu','Huawei','Dachang']
插入操作:这里用到insert来实现
1 >>>names=['chen','zi','ang'] 2 >>>names.insert(插入的位置,插入的内容) 3 例:>>>names.insert(1,'miao') [插入的位置1] 4 结果:>>>names 5 ['chen','miao','zi','ang']
修改操作:
1 >>>names 2 ['chen','miao','zi'.'ang'] 3 修改miao为damiao 4 >>>names[2]='damiao' 5 >>>names 6 ['chen','damiao','zi'.'ang']
删除操作:总共有3中删除方法
1 方法1:python中最常用的删除方法 2 >>>names=['chen','damiao','zi','ang'] 3 >>>del names[3] 4 >>>names 5 ['chen','damiao','zi'] 6 7 方法2:删除指定的字符 8 >>>names=['chen','damiao','zi','ang'] 9 >>>names.remove('damiao') 10 >>>names 11 ['chen','zi','ang'] 12 13 方法3:删除列表中最后一个值 14 >>>names=['chen','damiao','zi','ang'] 15 >>>names.pop() 16 >>>names 17 ['chen','damiao','zi']
合并操作:将多个列表合并成一个列表
1 >>>names=['chen','zi','ang'] 2 >>>a=['1','2','3','4'] 3 >>>names.extend(a) #合并操作 4 >>>names 5 ['chen','zi','ang','1','2','3','4']
统计操作:
>>>names=['chen','ai','ang','chen'] >>>names.count('chen') 2
排序;翻转:
排序: >>>names=['chen','zi','ang','1','2','3'] >>>names.sort() #排序 >>>names.reverse() #翻转
获取下标:
>>>names=['chen','zi','ang','damiao'] >>>names.index('zi') #返回的是找到的第一个值的下标
(2)元祖:元祖是特殊的列表(只读列表),一旦创建不可以修改
只有两个方法:count index
2.字符串操作
此处只概述常用的一些操作
a='Hello' b='World' >>>print(a+=b) #连接字符串 'HelloWorld' >>>print(cmp(a,b)) #比较字符串,相同返回0 不相同返回1 1 >>>print(len(a)) #获取字符串的长度 5 c='I,am,damiao' >>>print(c.strip(",")) #去除特定符号 Iamdamiao >>>print(c.split(",")) #分割字符串
>>>print(c.replace(oldstr,newstr,[count]))
3.字典操作
字典:字典是一种键值型数据结构,感觉有点类似mongo数据库
特性:
字典的特性:
- dict是无序的
- key必须是唯一的,so 天生去重
3.1创建字典
字典的创建方法有两种,第一种是使用花括号,第二种是使用内键函数dict
>>>info={}
>>>info={'name':'chenziang','sex':'boy','hobby':'python'}
>>>info=dict()
增加
info['love']='iphone' >>>info {'hobby': 'python', 'love': 'iphone', 'sex': 'boy', 'name': 'chenziang'}
修改
>>>info['hobby']='Linux' >>>info {'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'}
删除:这里提供了3种删除方法
>>>info {'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'} >>>info.pop('sex') >>>info {'hobby': 'python', 'love': 'iphone', 'name': 'chenziang'} >>>info {'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'} >>>del info['hobby'] #python中最常用的删除方法 >>>info {'sex': 'boy', 'love': 'iphone', 'name': 'chenziang'} >>>info {'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'} >>>info.popitem() #随机删除一个 >>>info {'sex': 'boy', 'name': 'chenziang', 'love': 'iphone'}
查找
>>>iinfo={'name':'chenziang','sex':'boy','hobby':'python'} >>>"sex" in info #标准用法 True #key不存在则返回None >>>info.get("hobby") #获取 'python' #key存在返回value #key不存在则返回None >>>info['hobby'] #key存在则返回value 'python' #key不存在则会报错
循环字典
#方法1 for key in info: print(key,info[key]) #方法2 for k,v in info.items(): #该操作会吧字典先转换成一个列表,当数据量大是请勿使用 print(k,v)
4.集合操作
集合是无需的,不重复的数据组合,主要作用有两个:
- 去重,将一个列表转换成集合,就好自动去重
- 关系测试,测试数据之间的交集、补集、差集等关系
常用操作:
(1)创建集合:
>>>a = set('chenziang') #创建一个字符集合 >>>a set(['a', 'c', 'e', 'g', 'i', 'h', 'n', 'z']) >>>b = set([1,2,3,4,5]) #创建一个数字集合 >>>b set([1, 2, 3, 4, 5])
(2)集合关系操作:
>>>a set(['a', 'c', 'e', 'g', 'i', 'h', 'n', 'z']) >>>b set([1, 2, 3, 4, 5]) >>>a|b #a和b的并集 set(['a', 1, 'c', 3, 'e', 5, 'g', 'i', 'h', 2, 'n', 4, 'z']) >>>a&b #a和b的交集 set([]) >>>a-b #求差集(项在a中,但不在b中) set(['a', 'c', 'e', 'g', 'i', 'h', 'n', 'z']) >>>a^b #对称差集(项在a或b中,但是不会出现在二者中) set(['a', 1, 2, 3, 4, 5, 'g', 'i', 'h', 'c', 'n', 'e', 'z'])
(3)集合的增删改查
>>>c=set('abc') set(['a', 'c', 'b']) #添加一项 >>>c.add('x') >>>c set(['a', 'x', 'c', 'b']) #添加多项 >>>c.update([1,2,3]) >>>c set(['a', 1, 'c', 'b', 2, 3, 'x']) #使用remove()可以删除一项: >>>c.remove('1') #此处删除1 >>>c set(['a', 'c', 'b', 2, 3, 'x']) >>>'a' in c True >>>'a' not in c False >>>
5.文件操作
在python中对文件操作的流程:
1.打开文件,得到文件句柄并赋值给一个变量
2.通过句柄对文件进行操作
3.关闭文件 (养成操作完文件及时关闭是一个良好的习惯)
1 文件的基本操作: 2 f=open('文件名','打开的方式') #打开方式1 3 with open('文件名','打开的方式') as f #打开方式2 4 line=f.readline() #读一行 5 lines=f.read() #读取剩下的内容 6 7 f.close() #关闭文件
打开文件的方式(模式):
- r,只读模式(默认);
- w,只写模式。【不可读;不存在则创建;存在则删除其中的内容】;
- a,追加模式。【可读;不存在则创建;存在则只追加内容】;
在'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.字符集与转码
注意的是:
1.在python2默认编码是ASCII, python3里默认是unicode
2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间
3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
上图仅适用于python2
#-*-coding:utf-8-*- __autor__='Chenziang' import sys print(sys.getdefaultencoding()) msg='喵大王' msg_bg2312=msg.decode('utf-8').encode('gb2312') gb2312_to_gbk=msg_gb2312.decode('gb2312').encode('gbk') print(msg) print(gb2312) pritn(gbk2312_to_gbk)