节内容
1、列表、元组操作
2、字符串操作
3、字典操作
4、集合操作
5、文件操作
6、字符编码与转码
一、列表操作
列表是我们以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。
1.列表的定义
1 names = [‘Alex‘,"Tenglan",‘Eric‘]
2.通过列表访问列表中的元素
1 >>> names[0] 2 ‘Alex‘ 3 >>> names[2] 4 ‘Eric‘ 5 >>> names[-1] 6 ‘Eric‘ 7 >>> names[-2] #还可以倒着取 8 ‘Tenglan‘
列表的使用0 开始的 通过列表的索引可以获得列表的内容。-1 代表最后一个元素 -2 代表倒数第二个元素
3.切片
取多个元素(切片是顾头不顾尾,从左向右数)
>>> name=["Alex","Tenglan","Eric","Rain","Tom","Amy"] >>> name[-3:-1] [‘Rain‘, ‘Tom‘] >>> name[0] ‘Alex‘ >>> name[0::2] [‘Alex‘, ‘Eric‘, ‘Tom‘] >>> name[:4] [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘] >>> name[4:] [‘Tom‘, ‘Amy‘] >>> name[1:-1] [‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘] >>> name[2] ‘Eric‘ >>>
4.追加 append()
>>> name.append("ksjdfha") >>> name [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘ksjdfha‘] >>>
5.删除 del pop remove
[‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] >>> del names[4] >>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] >>> >>> names.remove("Eric") #删除指定元素 >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] >>> names.pop() #删除列表最后一个值 ‘我是新来的‘ >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]
6.扩展 extend()
>>> name [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘ksjdfha‘] >>> name2=[‘xiaoming‘,‘xiaohua‘,‘xiaogang‘] >>> name.extend(name2) >>> name [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘ksjdfha‘, ‘xiaoming‘, ‘xiaohua‘, ‘xia ogang‘]
7.拷贝 .copy()
>>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] >>> name_copy = names.copy() >>> name_copy [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3]
8.排序 .sort()
[‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] >>> names.sort() #排序 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unorderable types: int() < str() #3.0里不同数据类型不能放在一起排序了,擦 >>> names[-3] = ‘1‘ >>> names[-2] = ‘2‘ >>> names[-1] = ‘3‘ >>> names [‘Alex‘, ‘Amy‘, ‘Amy‘, ‘Tenglan‘, ‘Tom‘, ‘1‘, ‘2‘, ‘3‘] >>> names.sort() >>> names [‘1‘, ‘2‘, ‘3‘, ‘Alex‘, ‘Amy‘, ‘Amy‘, ‘Tenglan‘, ‘Tom‘]
9.翻转 recerse()
>>> names [‘1‘, ‘2‘, ‘3‘, ‘Alex‘, ‘Amy‘, ‘Amy‘, ‘Tenglan‘, ‘Tom‘] >>> names.reverse() #反转 >>> names [‘Tom‘, ‘Tenglan‘, ‘Amy‘, ‘Amy‘, ‘Alex‘, ‘3‘, ‘2‘, ‘1‘]
10.获取索引 index()
>>> names [‘Tom‘, ‘Tenglan‘, ‘Amy‘, ‘Amy‘, ‘Alex‘, ‘3‘, ‘2‘, ‘1‘] >>> names.index("Amy") 2 #只返回找到的第一个下标
11.统计 count()
>>> names [‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] >>> names.count("Amy") 2
二、元组操作
元组其实科列表差不多,也是存一组数,只是它一旦创建,表不能再修改,
1、元组的定义
names=(‘alex‘,‘jack‘,‘eric‘)
它只有两个方法
count()
copy()
三、字符串操作
1 name.capitalize() 首字母大写 2 name.casefold() 大写全部变小写 3 name.center(50,"-") ‘---------------------Alex Li----------------------‘ 4 >>> n4.ljust(40,"-") ‘Hello 2orld-----------------------------‘ 5 >>> n4.rjust(40,"-") ‘-----------------------------Hello 2orld‘ 6 7 name.count(‘lex‘) 统计 lex出现次数 8 name.encode() 将字符串编码成bytes格式 9 name.endswith("Li") 判断字符串是否以 Li结尾------比如判读一个邮件地址是不是.com 结尾 10 Name.startwith("li") 判断字符串是否以li开头 11 "Alex\tLi".expandtabs(10) 输出‘Alex Li‘, 将\t转换成多长的空格 12 name.find(‘A‘) 查找A,找到返回其索引, 找不到返回-1 13 Name.rfind() 从右面开始查返回索引 14 >>>name=“huang22dzgs” 15 >>>name.rfind("g") 16 >>>10 17 >>>Name.find("g") 18 >>>5 19 format : 20 >>> msg = "my name is {}, and age is {}" 21 >>> msg.format("alex",22) 22 ‘my name is alex, and age is 22‘ 23 >>> msg = "my name is {1}, and age is {0}" 24 >>> msg.format("alex",22) 25 ‘my name is 22, and age is alex‘ 26 >>> msg = "my name is {name}, and age is {age}" 27 >>> msg.format(age=22,name="ale") 28 ‘my name is ale, and age is 22‘ 29 format_map 30 >>> msg.format_map({‘name‘:‘alex‘,‘age‘:22}) 传一个字典进去 31 ‘my name is alex, and age is 22‘ 32 msg.index(‘a‘) 返回a所在字符串的索引 33 ‘9aA‘.isalnum() 判读字符串是数字或26个英文组成 True 34 ‘asjdkfASSD‘.isalpha() 判读是否纯英文字符 35 36 ‘1D‘.isdecimal() 判断是不是10进制 37 ‘1a‘.isidentifier() 判断是不是一个合法的标识符 38 ‘12‘.isdigit() 判断是否整数 39 name.isnumeric 判断是不是纯数字和isdigit 等同 40 name.isprintable 41 name.isspace 42 name.istitle 每个字符是否首字符大写 43 name.isupper 是否全大写 44 "|".join([‘alex‘,‘jack‘,‘rain‘]) ‘alex|jack|rain‘ 把一个列表变成字符串并且用|隔开 45 Name.split() 把一个字符串按照中间的空格分隔成一个列表 参数为空 就是空格 分隔 参数写“l” 就是l分隔的 但是 分隔后l就不见了 因为被当做分隔符了 46 >>>print(‘alex lil‘.split(‘l‘)) 47 >>>[‘a‘,‘ex‘,‘i‘,‘‘] 48 49 Name.strip() 去掉字符串两边的空格和回车 50 Name.lstrip() 去掉字符串左边的空格和回车 51 Name.rstrip() 去掉字符串右边的空格和回车 52 name.lower() 字符串全变小写 53 Name.upper() 字符串全变大写 54 ‘alex li‘.replace(‘l‘,‘L‘) 使用L替换l 55 ‘alex li‘.replace(‘l‘,‘L‘,1) 使用L替换l 只替换一个就写第三个参数为1 56 Name.swapcase() 字符串中的字符大写换小写 ,小写换大写 57 >>>‘lex li‘.zfill(50) 58 >>>0000000000000000000000lex li
四、字典操作
字典是一种key-value 的数据类型(键值对),使用就像我们上学使用的字典,通过笔画,字母来查对应的详细内容。
语法: info = { ‘stu1101‘: "TengLan Wu", ‘stu1102‘: "LongZe Luola", ‘stu1103‘: "XiaoZe Maliya", }
1、增加
>>> info["stu1104"] = "苍井空" >>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1104‘: ‘苍井空‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1101‘: ‘TengLan Wu‘}
2、修改
>>> info[‘stu1101‘] = "武藤兰" >>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1101‘: ‘武藤兰‘}
3删除
>>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1101‘: ‘武藤兰‘} >>> info.pop("stu1101") #标准删除姿势 ‘武藤兰‘ >>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘} >>> del info[‘stu1103‘] #换个姿势删除 >>> info {‘stu1102‘: ‘LongZe Luola‘} >>> info = {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘} >>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘} #随机删除 >>> info.popitem() (‘stu1102‘, ‘LongZe Luola‘)
4查找
>>> info = {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘} >>> >>> "stu1102" in info #标准用法 True -----这样可以判断一个key 是否存在。 在python 2中info.has key("1130") 等同于 stu1103 in info >>> info.get("stu1102") #获取 有就返回keY相对应的value, 没有就null ‘LongZe Luola‘ >>> info["stu1102"] #同上,但是看下面-----这种方式适合确定字典 中一定存在的 否则会报错 ‘LongZe Luola‘ >>> info["stu1105"] #如果一个key不存在,就报错,get不会,不存在只返回None Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: ‘stu1105‘