一 、列表 list、元组操作
a. 列表的操作 (通过下标访问列表中的元素,下标从0开始计数)
list_test = [1,2,3]
1. 增加:list_test.append(4)---> 结果:[1,2,3,4];
2. 删除:list_test.pop(2) / list_test.remove(3) / del list_test[2] --->结果:[1,2];
3. 修改:list_test[0] = 5--->结果:[5,2,3];
4. 查看:x = list_test[1] --->结果:x = 2; y = list_test.index(2)--->结果:y = 1;
5. 插入:list_test.insert(1,7)--->结果:[1,7,2,3]
6. 反转:list_test.reverse()--->结果:[3,2,1]
7. 切片:list_test [0:2]--->结果:[1,2] # 取下标0至下标2之间的数字,包括0,不包括2;
8. 扩展:list_test1 = ['gang','zi'] --> list_test.extend(list_test1)-->list_test = [1,2,3,'gang','zi']
9. 浅cope(直接量复制的是值,引用复制的是地址):(1).import copy list_test1 = copy.copy(list_test) (2). list_test2 = list_test[:] (3).list_test3 = list(list_test);
10. 按步长操作:list_test[::2]--->结果[1,3];
11. 统计:z = list_test.count(2)--->结果:z = 1;
12. 排序: list_test.sort(); # 3.0里不同数据类型不能放在一起排序;
13. 获取下标:list_test.index(2)---> 1 # 只返回找到的第一个下标;
b. 元组是特殊的列表,只可以查看不可修改,又称为只读列表。
二、字符串操作 (不可修改)
str_test = "i have a dream" --->
1. 拼接:print('-'.join(["1","2","3"])) --->结果:1-2-3 <class 'str'>;
2. 句子首字母大写:str_test.capitalize()--->结果:"I have a dream";
3. 统计字符在整句中出现的次数:str_test.count('a')--->结果:3 ;
4. 居中填补指定符号:str_test.center(20,'-')--->结果:---i have a dream---;
5. 判断是否依指定字符结尾:str_test.endwith('am')--->结果:True;
6. 返回指定字符在句子中的开始下标:str_test.find('have')--->结果:2 ;
7. 句子中参数替换:str_test = "i {name} have a {some} dream" --->str_test.format(name="gangzi",some="big")) / name.format_map( {'name':'gangzi','some':'big'} )
8. 判断是否是数字:'a123-'.isalnum()--->False;
9. 判断是否是字母:'ab'.isalpha()--->True;
10. 判断是否是整数:'10'.isdecimal()---->True;
11. 判断是否是整数(常用):'10'.isdigit()--->True;
12. 判断是不是一个合法的标识符:print('aa1'.isidentifier()) --->True # (是否符合变量名规则);
13. 是否为数值格式'33.0'.isnumeric()--->False;
14. 检查是否为标题格式:str_test.istitle()--->False;
15. 检查是否是可打印文件:print(str_test.isprintable())--->True # tty file,drive file;
16. 检查是否大写:str_test.isupper()--->False;
17. 指定字符补充:print(str_test.ljust(30,'-'))--->i {name} have a {some} dream--; # 同理 str_test.rjust(30,'-');
18. 小写转换:str_test.lower()--->i {name} have a {some} dream;
19. 大写转换:str_test.upper()--->I {NAME} HAVE A {SOME} DREAM;
20. 截空:str_test.lstrip() / str_test.rstrip() / str_test.strip()
21. 匹配替换(转译):p = str.maketrans('abcdefg','1234567')--->print(str_test.translate(p))--->结果:i {n1m5} h1v5 1 {som5} 4r51m;
22. 转换字符:print(str_test.replace('n','N',1))--->结果:i {Name} have a {some} dream;
23. 从右侧开始查找:print(str_test.rfind('n'))---->结果:3 ;
24. 按/t分:print(str_test.split(' '))--->['i {name} have a {some} dream'] <class 'list'>;
25. 按行分:print(str_test.splitlines())--->['i {name} have a {some} dream'] <class 'list'>;
26. 大小写转换:str_test.swapcase()--->I {NAME} HAVE A {SOME} DREAM;
27. 标题格式-单词首字母大写:str_test.title()--->I {Name} Have A {Some} Dream;
28. 左补充0:str_test.zfill(30)--->00i {name} have a {some} dream;
三、字典操作 (dict是无序的,key必须唯一)
1. 单个增: dict_test.setdefault(k,v) # 如果字典中有与k同名的键值对,则不做任何修改否则增加;
2. 多个增:dict_test.update(dict_test1) # 将字典dict_test1中的键值对添加到字典dict_test中,同名k做修改操作;
3. 修改:dict_test['v'] = new_v;
4. 删除一个:dict_test.pop('v'); 或者 del dict_test['v'];
5. 随机删一个:dict_test.popitem();
6. 高效遍历:for k in dict_test: print(k,dict_test[k]);
7. 低效遍历:for k,v in dict_test.items: print(k,v); # 因为需要先将字典转换为列表;
8. 列表创建字典 举例:dict_test = dict.fromkeys([1,2,3],['name','age','sex']) ---> dict_test = {1:['name','age','sex'], 2: ['name','age','sex'], 3: ['name','age','sex']}; # 注意这里是浅cope。
四、集合操作 (一个无序的,不重复的数据组合)
1. 把一个列表变成集合,就自动去重了:set_test = set([1,1,2,3])--->set_test = {1,2,3};
2. 并集union:| ;
3. 交集intersection:& ;
4. 差集difference:- ;
5. 对称差集symmetric_difference:^ ;
6. 添加一项:set_test.add('x);
7. 添加多项:set_test.update(['x','y']);
8. 删除一项:set_test.remove('x');
9. set的长度: len(set_test);
10. 判断x是否为set_test的成员:x in set_test ; # x is not in set_test ;
11. 判断是否是子集:set_test1.issubset(set_test) 或者 set_test1 <= set_test # set_test1是否为set_test的子集;
12. 判断是否是父集:set_test.siuperset(set_test) 或者 set_test >= set_test1 # set_test是否为set_test1的父集;
13. 复制:set_test1 = set_test.copy() # 浅复制。
五、文件操作
1. 获得文件句柄:f = open('file_name','w',encoding='utf-8') # 文件打开模式w/r/a/w+/r+/a+/rU/rb/wb/ab/;
2. 文件读取:f.read() / f.readline();
3. 文件写入:write();
4. with语句:with open() as f:……。
六、字符编码与转码
1. Python2默认编码是ASCII,Python3默认编码是Unicode;
2. unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(英文1字节,汉字3字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf-8省空间;
3. 在Python3中:decode,在解码会把string 变成bytes类型,encode编码会把bytes变回string。