700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python ---------列表 集合 字典 深浅拷贝

Python ---------列表 集合 字典 深浅拷贝

时间:2020-04-10 06:12:15

相关推荐

Python ---------列表 集合 字典 深浅拷贝

列表 集合 字典 深浅拷贝

列表集合### 集合的相关操作字典深浅拷贝

列表

# ### 列表的相关操作# (1)列表的拼接 (同元组)# (2)列表的重复 (同元组)# (3)列表的切片 (同元组)# 语法 => 列表[::] 完整格式:[开始索引:结束索引:间隔值]# (1)[开始索引:] 从开始索引截取到列表的最后# (2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)# (3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)# (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值# (5)[:]或[::] 截取所有列表# (4)列表的获取 (同元组)# (5)列表的修改 ( 可切片 )# (6)列表的删除 ( 可切片 )# (1)列表的拼接 (同元组)lst1 = [1,2,3]lst2 = [4,5,6,6]res = lst1 + lst2print(res)# (2)列表的重复 (同元组)res = lst1 * 3print(res)# (3)列表的切片 (同元组)# 语法 => 列表[::] 完整格式:[开始索引:结束索引:间隔值]# (1)[开始索引:] 从开始索引截取到列表的最后# (2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)# (3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)# (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值# (5)[:]或[::] 截取所有列表lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]# (1)[开始索引:] 从开始索引截取到列表的最后res = lst[2:]print(res)# (2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)res = lst[:4]print(res)# (3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)res = lst[4:6]print(res)# (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值# 正向截取res = lst[::2] # 0 2 4 6 8 ... print(res)# 逆向截取res = lst[::-2] # -1 -3 -5 -7 -9print(res)# (5)[:]或[::] 截取所有列表res = lst[:]res = lst[::]print(res)# (4)列表的获取 (同元组)# 01 23456 7lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]#-8-7-6-5-4-3-2-1res = lst[7]res = lst[-1]print(res)# (5)列表的修改 ( 可切片 )"""要求的数据类型是可迭代性数据(容器类型数据,range对象,迭代器)"""lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]# 利用切片可以一次修改多个元素,没有个数上的限制# lst[1:3] = "abcd"lst[3:5] = ["往返","晏国彰","牧树人"]print(lst)# 切片配合步长,切出多少个元素,修改多少个元素lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]# res = lst[::2]#吕洞宾 铁拐李 张果老 韩湘子# lst[::2] = "abcd"lst[::2] = range(1,5) # 0 2 4 6 8 10 .....print(lst,"<==>")# (6)列表的删除 ( 可切片 )lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]# del lst[-1]# print(lst)# 删除的是变量res本身,不是列表中的元素"""res = lst[-1]del resprint(lst)"""# del lst[:2]del lst[::3] # 0 3 6 9 12 ...print(lst)# 元组中的列表,里面的元素可以修改;tup = (1,2,3,[4,5,6,(7,8,9)])tup[-1][1] = 6666print(tup)

集合

### 集合的相关操作

set1 = {"jacklove","theshy","rookie","xboyww"}set2 = {"倪萍","张国荣","赵本山","刘能","赵四","xboyww"}#intersection() 交集 res = set1.intersection(set2)print(res)# 简写 &res = set1 & set2print(res)#difference() 差集 res = set1.difference(set2)print(res)# 简写 -res = set1 - set2print(res)#union() 并集res = set1.union(set2)print(res)# 简写 |res = set1 | set2print(res)#symmetric_difference() 对称差集 (补集情况涵盖在其中) res = set1.symmetric_difference(set2)print(res)# 简写 ^res = set1 ^ set2print(res)#issubset() 判断是否是子集set1 = {"周杰伦","王力宏","罗志祥","潘玮柏"}set2 = {"周杰伦","王力宏"}res = set1.issubset(set2)print(res)# 简写 < res = set1 < set2print(res)#issuperset() 判断是否是父集res = set1.issuperset(set2)print(res)# 简写 > res = set1 > set2print(res)#isdisjoint() 检测两集合是否不相交 不相交 True 相交Falseres = set1.isdisjoint(set2)print(res)# ### 集合相关的函数setvar = {"神秘男孩","金角大王"}# 增#add() 向集合中添加数据 (一次加一个)setvar.add("银角大王")print(setvar)#update() 迭代着增加 (一次加一堆)strvar = ("刘子豪","刘鑫")setvar.update(strvar)print(setvar)# 删#clear() 清空集合# setvar.clear()# print(setvar)#pop() 随机删除集合中的一个数据res = setvar.pop()print(res , setvar)#remove() 删除集合中指定的值(不存在则报错)(了解)# setvar.remove("神秘男孩")# print(setvar)#discard() 删除集合中指定的值(不存在的不删除 推荐使用)setvar.discard("神秘男孩")setvar.discard("神秘男孩1234324")print(setvar)# ### 冰冻集合#frozenset 可强转容器类型数据变为冰冻集合"""冰冻集合一旦创建,不能在进行任何修改,只能做交叉并补操作"""lst1 = ["王闻",18,"男性","爱好:跑步"]fz1 = frozenset(lst1)lst2 = ("王闻","地址:包头","买一辆特斯拉9.9包邮")fz2 = frozenset(lst2)print(fz1 , type(fz1))print(fz2 , type(fz2))# 不能够在冰冻集合当中添加或者删除元素# fz1.add(123) error# 只能交差并补print( fz1 & fz2 )print( fz1 - fz2 )

字典

# ### 字典相关函数# 增dic = {}dic["ww"] = "一表人才,除了帅气的皮囊之外,一无所有"dic['ywz'] = "渣男"dic["hxl"] = "抠脚老汉"print(dic)#fromkeys() 使用一组键和默认值创建字典lst = ["ww","ywz","hxl"]dic = {}.fromkeys(lst,None)print(dic)# 注意点: 三个键所指向的列表是同一个(不推荐)"""dic = {}.fromkeys(lst,[])print(dic)dic["ww"].append(1)print(dic)dic["ww"] = []dic['ywz'] =[]dic["hxl"] =[]"""# 删#pop() 通过键去删除键值对 (若没有该键可设置默认值,预防报错)dic = {"top":"花木兰" , "middle":"甄姬" , "bottom":"孙尚香" , "jungle" : "钟馗" , "support":"蔡文姬" }res = dic.pop("top")# 如果删除的是不存在的键,直接报错# res = dic.pop("top123")# 可以设置默认值,防止报错# res = dic.pop("top123","没有这个键")res = dic.pop("middle","没有这个键")print(res , dic,"<=======>")#popitem() 删除最后一个键值对 res = dic.popitem()print(res, dic)#clear() 清空字典dic.clear()print(dic)# 改#update() 批量更新(有该键就更新,没该键就添加)dic = {'ww': '一表人才,除了帅气的皮囊之外,一无所有', 'ywz': '渣男', 'hxl': '抠脚老汉'}dic_new = {"ywz":"暖男","hxl":"扣手","ly":"小美女,单纯,可爱,活泼,灵巧...."}# 方法一(推荐)dic.update(dic_new)print(dic)# 方法二dic.update(kxq="聪明,活泼,可爱,灵巧,惹人喜欢",ccg="乐观,大方,可爱,灵巧")print(dic)# 查#get() 通过键获取值(若没有该键可设置默认值,预防报错)dic = {'ww': '一表人才,除了帅气的皮囊之外,一无所有', 'ywz': '暖男', 'hxl': '扣手'}res = dic.get("ww")res = dic.get("zbcdefg") # Noneres = dic.get("zbcdefg","没有这个键")# res = dic['abcee'] errorprint(res)# 重要 ***dic = {'ww': '一表人才,除了帅气的皮囊之外,一无所有', 'ywz': '暖男', 'hxl': '扣手'}#keys() 将字典的键组成新的可迭代对象res = dic.keys()print(res)#values() 将字典中的值组成新的可迭代对象res = dic.values()print(res)#items() 将字典的键值对凑成一个个元组,组成新的可迭代对象 res = dic.items()print(res)

深浅拷贝

# ### 浅拷贝 和 深拷贝"""a = 15b = aa = 16print(b)lst1 = [1,2,3]lst2 = lst1lst1.append(4)print(lst2)"""# 1.浅拷贝import copy# lst1 = [1,2,3]# # 方法一 copy.copy 模块.方法# lst2 = copy.copy(lst1)## lst1.append(4)# print(lst1)# print(lst2)# 方法二 列表.copy()# lst1 = [1,2,3,4]# lst3 = lst1.copy()# lst1.insert(0,0)# print(lst1)# print(lst3)# 2.深拷贝# lst1 = [1,2,3,[4,5,6]]# lst2 = copy.copy(lst1)# lst1[-1].append(7)# lst1.append(100)# print(lst1)# print(lst2)#lst1 = [1,2,3,[4,5,6]]lst5 = copy.copy(lst1)lst2 = copy.deepcopy(lst1)lst1[1] = 555lst1[-1].extend("ab")print(lst5)print(lst2)print(lst1)print(id(lst2[-1]))print(id(lst1[-1]))print(id(lst1[0]))print(id(lst2[0]))lst2[0] = 1111print(id(lst1[0]))print(id(lst2[0]))"""# 总结: (1)浅拷贝只拷贝一级容器中的所有数据(2)深拷贝拷贝所有层级的所有元素浅拷贝速度比深拷贝速度快深拷贝在执行时: 如果是不可变数据,地址会暂时的指向原来数据,如果是可变数据,直接开辟新空间不可变数据: Number str tuple可变数据 : list set dict"""

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。