pyhton学习笔记之列表、元组、字符串、字典、集合
1、列表、元组操作
- 列表:有序的数据类型之一,可通过索引取得列表的值,可对列表进行,添加、删除、更改、查找
列表定义:
list_names = ["Wang","Zhang","Li","Hao","Jiang","Xu","Tan"] # 可通过下标访问数据 print(list_names[1]) print(list_names[3])
切片:取多个元素
1 list_names = ["Wang","Zhang","Li","Hao","Jiang","Xu","Tan"] 2 print(list_names[0:3]) # 取列表中多个数据,注:结尾下标无法取值,从左往右取 3 print(list_names[-1]) # 取倒数N个数据 4 print(list_names[-4:-1]) # 取倒数指定多个数据,注:结尾下标无法取值,从左往右取
添加:
1 list_names = ["Wang","Zhang","Li","Hao","Jiang","Xu","Tan"] 2 # 追加 3 list_names.append("Fang") # 追加插入数据至末尾 4 #插入 5 list_names.insert(2,"Huang") # 插入数据
删除:
1 list_names = ["Wang","Zhang","Li","Hao","Jiang","Xu","Tan"] 2 del list_names[2] # 删除指定位置数据 3 list_names.remove("Li") # 删除指定位置数据 4 list_names.pop(0) # 删除指定位置数据,没有参数则默认删除最后一个数据
更改:
1 list_names = ["Wang","Zhang","Li","Hao","Jiang","Xu","Tan"] 2 list_names[2] = "Xu" #更改指定数据
查找:
1 list_names = ["Wang","Zhang","Li","Hao","Jiang","Xu","Tan"] 2 print(list_names.index("Hao")) # 查看指定数据在列表中的位置 3 print(list_names[list.index("Hao")]) # 通过查看指定数据在列表中的位置确定数据
复制:
1 import copy 2 # 浅copy,只能COPY第一层数据 3 list1 = [1, 2, [7, 8, 9], 3, 4] 4 list2 = list1.copy() # 修改list1中list1[2][2]数据,list2[2][2]数据并未修改 5 list1[2][2] = 6 6 print(list1[2]) 7 print(list2[2]) # 显示list2中list2[2][2]数据已修改,即只复制了list1第一层 8 # 深度copy,只能COPY多层数据 9 list1 = [1, 2, [7, 8, 9], 3, 4] 10 list2 = copy.deepcopy(list1) # 修改list1中list1[2][2]数据,list2[2][2]数据并未修改 11 list1[2][2] = 6 12 print(list1[2]) 13 print(list2[2]) # 显示list2中list2[2][2]数据并未修改,即只复制了list1多层
其它方法:
1 list_names = ["Wang", "Zhang", "Li", "Tan", "Hao", "Jiang", "Xu", "Tan"] 2 list_names.reverse() # 逆序列表元素 3 print(list_names.count("Tan")) # 查看元素在列表中的次数 4 list_names.clear() # 清空列表元素 5 list_names.sort() # 列表排序:从前往后:特殊字符>>数字>>大写字母>>小写字母(ASCII排序) 6 list1 = [1, 2, [7, 8, 9], 3, 4] 7 list_names.extend(list1) # 扩展添加另一个列表
- 元组:有序的数据类型之一,可通过索引取得元组的值,仅对对元组进行,索引和计数
定义:
1 tuple_1 = ("Wang", "Li", "Tan", "Li", "Li") 2 print(type(tuple_1))
索引\计数:
tuple_1 = ("Wang", "Li", "Tan", "Li", "Li") print(tuple_1.index("Li")) # 返回第一个值的索引 print(tuple_1.count("Li")) # 返回"Li"的个数
2、字符串操作
- 字符串:不可修改,形如有序列表
定义:
1 name = "My name is jon ,Hello!" 2 print(type(name))
操作方法:
1 name = "My name is jon ,Hello" 2 name1 = " first name " 3 print(name.capitalize()) # 首字母大写 4 print(name.count('n')) # 统计'n'的个数 5 print(name.center(50, "-")) # 打印50个字符,不够50用 '-'填充,内容居中 6 print(name.endswith('n')) # 判断是否已"n"结尾 7 print(name.startswith('n')) # 判断是否已" "开头 8 print(name.format(_name = name1)) # 引用其它变量 9 print(name.isdigit()) # 判断是否是数字 10 print(name1.isalnum()) # 判断是否全为数字和字母 11 print(name1.isalpha()) # 判断是否全为字母 12 print(name1.isdecimal()) # 判断是否全为十进制数 13 print(name1.isidentifier()) # 判断是否为合法的标识符 14 print(name1.islower()) # 判断字母是否全为小写 15 print(name1.isupper()) # 判断字母是否全为大写 16 print(name1.isnumeric()) # 判断是否是数字 17 print(name1.isspace()) # 判断是否为空格 18 print(name.istitle()) # 判断是否为标题(首字母大写) 19 print(name.replace('N', 'n')) # 替换字符串中的字符 20 print(name.rjust(50, '*')) # 打印50个字符不足50用*替代,需打印字符置于最右边 21 print(name.rindex('n')) # 索引字符返回最后一个字符的下标 22 print(name.index('n')) # 索引字符返回第一个字符的下标 23 print(name.rfind('n')) # 查找字符返回最后一个字符的下标 24 print(name.find('n')) # 查找字符返回第一个字符的下标 25 print(name.rsplit(" ")) # 按指定字符划分字符串,且该字符被","代替(默认空格) 26 print(name.rstrip()) # 除去字符串末尾空格符及回车符 27 print(name.lstrip()) # 除去字符串前端空格符及回车符 28 print(name.strip()) # 除去字符串前端和后端空格符及回车符 29 print(name.swapcase()) # 将字符串大小写字母交换 30 print(name.title()) # 将字符串改为title(各个首字母大写) 31 print(name.zfill(50)) # 打印50个字符不足50用0替代,需打印字符置于最右边 32 print(name.upper()) # 转换为小写字母 33 print(name.lower()) # 转换为大写字母 34 print(name.replace(' ', '')) 35 print(name.index('y'))
3、字典操作
- 字典:键-值对的形式,可通过键查找键的值
- 特性:无序,键唯一(去重)
定义:
1 favorite_book = { 2 "wang": "math", 3 "cheng": "english", 4 "zhang": "chinese", 5 "xu": "japanese" 6 } 7 print(type(favorite))
操作方法:
1 favorite_book = { 2 "wang": "math", 3 "cheng": "english", 4 "zhang": "chinese", 5 "xu": "japanese" 6 } 7 # 查找 8 print("wang favorite book is %s" % favorite_book["wang"]) # 确定查找对象在字典中 9 print(favorite_book.get("li")) # 不确定查找对象是否在字典中,不在字典中返回None 推荐使用 10 print('wang' in favorite_book) # 判断值是不是在字典中 11 12 # 修改 13 favorite_book["wang"] = "li" 14 for name, books in favorite_book.items(): 15 print("name :%s >> books : %s" % (name.upper(), books.upper())) 16 17 # 删除 18 del favorite_book["zhang"] 19 favorite_book.pop("wang") 20 favorite_book.popitem() 21 for name, books in favorite_book.items(): 22 print("name :%s >> books : %s" % (name.lower(), books.lower())) 23 24 # 增加 25 favorite_book["qin"] = "语文" 26 favorite_book["qing"] = "数学" 27 print(favorite_book) 28 29 # 结合for循环 30 for k, v in favorite_book.items(): # 效率低 31 print(k, v) 32 for k in favorite_book: # 效率高 33 print(k, favorite_book[k]) 34 35 # 只打印键.keys() 36 for name in favorite_book.keys(): 37 print(name) 38 39 # 只打印值.values() 40 for books in favorite_book.values(): 41 print(books) 42 43 # 更新 44 c = {'wang': "外语", "liu": "地理"} # 将两个字典合并,相同键,替换值,不同键添加 45 favorite_book.update(c) 46 print(favorite_book) 47 48 favorite_book.setdefault('hui', "语文") # 在favorite_books 中取键,若取得,打印原value 若取不到则添加 49 print(favorite_book) 50 favorite_book.setdefault('wang', "语文") # 在favorite_books 中取键,若取得,打印原value 若取不到则添加 51 print(favorite_book) 52 53 # 通过一个列表生成默认dict, ##有毒放弃 54 # dict.fromkeys = ([1,2,3]) 55 # print(dict.fromkeys)
4、集合操作
- 集合:类似字典,可进行更删改查,用于关系测试,交集,并集,差集等关系
- 特性:无序,唯一(天生去重)
定义:
1 names = {'zhang','wang','li','xu','peng'} 2 set(names) 3 print(type(names)) 4 names1 = set(['qin','wang','qiao','xu','huang']) 5 print(type(names1))
操作方法:
1 # 创建集合 2 names = {'zhang','wang','li','xu','peng'} 3 set(names) 4 print(type(names)) 5 names1 = set(['qin','wang','qiao','xu','huang']) 6 print(type(names1)) 7 8 # 求并集 9 union = names.union(names1) 10 print(union) 11 union1 = names | names1 12 print(union1) 13 14 # 求交集 15 intersection = names.intersection(names1) 16 print(intersection) 17 intersection1 = names & names1 18 print(intersection1) 19 20 # 求差集 21 difference = names.difference(names1) # name中存有的names1中没有 22 print(difference) 23 24 difference_1 = names - names1 25 print(difference_1) 26 27 difference1 = names1.difference(names) # names1中有的names中没有 28 print(difference1) 29 30 difference1_1 = names - names1 31 print(difference1_1) 32 33 # 对称差集(将names和names1合并后,除去交集剩下的所有) 34 symmetric = names.symmetric_difference(names1) 35 print(symmetric) 36 symmetric1 = names1.symmetric_difference(names) 37 print(symmetric1) 38 39 # 添加单个元素 40 names.add('liu') 41 print(names) 42 43 # 添加多个元素 44 names.update(['feng','jin']) 45 print(names) 46 47 # 删除指定元素元素 48 names.remove('jin') 49 print(names) 50 51 # 随机删除元素 52 names.pop() 53 print(names) 54 55 # 无法对集合中元素的值更改 56 57 # 检测元素是否存在集合中,存在返回True 不存在返回False 58 print('wang' in names) 59 print('ma' in names) 60 61 # 检测b(names2)是不是a(names)的子集 62 names2 = {'peng', 'xu'} 63 print(names2.issubset(names)) 64 65 # 检测a(names)的是不是b(names2)父集 66 print(names.issuperset(names2))