列表 集合 字典 深浅拷贝

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

列表

# ### 列表的相关操作
# (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 + lst2
print(res)# (2)列表的重复   (同元组)
res = lst1 * 3
print(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 -9
print(res)# (5)[:]或[::]  截取所有列表
res = lst[:]
res = lst[::]
print(res)# (4)列表的获取   (同元组)
#       0          1        2           3     4         5           6    7
lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]
#       -8          -7      -6      -5          -4      -3      -2      -1
res = 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 res
print(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] = 6666
print(tup)

集合

### 集合的相关操作

set1 = {"jacklove","theshy","rookie","xboyww"}
set2 = {"倪萍","张国荣","赵本山","刘能","赵四","xboyww"}
#intersection() 交集
res = set1.intersection(set2)
print(res)# 简写 &
res = set1 & set2
print(res)#difference()   差集
res = set1.difference(set2)
print(res)# 简写 -
res = set1 - set2
print(res)#union()  并集
res = set1.union(set2)
print(res)# 简写 |
res = set1 | set2
print(res)#symmetric_difference() 对称差集 (补集情况涵盖在其中)
res = set1.symmetric_difference(set2)
print(res)# 简写 ^
res = set1 ^ set2
print(res)#issubset()   判断是否是子集
set1 = {"周杰伦","王力宏","罗志祥","潘玮柏"}
set2 = {"周杰伦","王力宏"}
res = set1.issubset(set2)
print(res)# 简写 <
res = set1 < set2
print(res)#issuperset() 判断是否是父集
res = set1.issuperset(set2)
print(res)# 简写 >
res = set1 > set2
print(res)#isdisjoint() 检测两集合是否不相交  不相交 True  相交False
res = 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") # None
res = dic.get("zbcdefg","没有这个键")
# res = dic['abcee'] error
print(res)#  重要 ***
dic = {'ww': '一表人才,除了帅气的皮囊之外,一无所有', 'ywz': '暖男', 'hxl': '扣手'}
#keys()   将字典的键组成新的可迭代对象
res = dic.keys()
print(res)#values() 将字典中的值组成新的可迭代对象
res = dic.values()
print(res)#items()  将字典的键值对凑成一个个元组,组成新的可迭代对象
res = dic.items()
print(res)

深浅拷贝

# ### 浅拷贝 和 深拷贝
"""
a = 15
b = a
a = 16
print(b)lst1 = [1,2,3]
lst2 = lst1
lst1.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] = 555
lst1[-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] = 1111
print(id(lst1[0]))
print(id(lst2[0]))"""
# 总结: (1)浅拷贝只拷贝一级容器中的所有数据(2)深拷贝拷贝所有层级的所有元素浅拷贝速度比深拷贝速度快深拷贝在执行时: 如果是不可变数据,地址会暂时的指向原来数据,如果是可变数据,直接开辟新空间不可变数据: Number str tuple可变数据  : list set dict
"""

Python ---------列表 集合 字典 深浅拷贝相关推荐

  1. python列表元组字典集合实验心得_python学习小总结(列表、元组、字典、集合、字符串)...

    ---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.ext ...

  2. 数据池,集合及深浅拷贝

    数据池,集合及深浅拷贝 小数据池(python中一种提高效率的方式,固定数据类型使用同一个内存地址) 支持str,int,bool id 查看空间的内存地址 获取开辟空间的一种地址 print(id( ...

  3. Python列表,元组,字典的区别

    Python列表,元组,字典的区别: 1.元组是不可变的, 而列表.字典是可变的.元组是不可变对象,对象一旦生成,它的值将不能更改:列表是可变对象,对象生成后,可以对其元素进行更改.添加.删除.清空. ...

  4. 1.3 Python列表、字典、集合和JSON四种数据类型

    Applications of Deep Neural Networks with Keras 基于Keras的深度神经网络应用 著:Jeff Heaton 译:人工智能学术前沿 目录 1.Pytho ...

  5. python 列表、字典转json字符串

    python 列表.字典转json字符串 代码 import json data1 = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] data ...

  6. python列表生成字典_Python 列表生成式 字典生成式

    Python 列表生成式 & 字典生成式 通过生成式可以更加简洁地生成列表和字典 列表生成式 对比 直接生成数据后加入列表示例: user_list = list() for i in ran ...

  7. python列表、字典、元组的用法及区别_python列表,字典,元组简单用法示例

    本文实例讲述了python列表,字典,元组简单用法.分享给大家供大家参考,具体如下: 列表 #_*_ coding:utf-8 _*_ # 列表,定义在方括号的形式中,可以进行切片操作. #它没有固定 ...

  8. 高阶函数、列表/集合/字典/推导式、递归函数

    文章目录 高阶函数(map filter reduce sorted) map(处理数据) filter(过滤数据) reduce(计算数据) reduce(func,lst)实现的过程 sorted ...

  9. Python之基础数据补充、set集合和深浅拷贝

    基础数据补充 字符串的常用操作         1. join() li = ["李嘉诚", "麻花藤", "⻩海峰", "刘嘉玲 ...

  10. python之set集合、深浅拷贝

    一.基本数据类型补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作: li = ['李嘉诚','何炅','海峰','刘嘉玲']s = "_&qu ...

最新文章

  1. 一种新的验证码(改进版)
  2. Python的列表推倒式、生成器及迭代器
  3. 我慕了!腾讯大手一挥,员工买房最高可申请免息借款90万
  4. android studio怎么输入中文,怎么在linux版的AndroidStudio输入中文?
  5. 函数节流你应该知道的那点事
  6. 制造-销售”模式正在消亡,传统大型企业的上云之路要如何举步?
  7. 再回首,Java温故知新(六):Java基础之变量
  8. 倍福PLC选型--如何看电机是多圈绝对值还是单圈绝对值编码器
  9. netty权威指南学习
  10. 测试软件的稳定性,客户端稳定性测试
  11. Android uni app原生插件页面全屏Activity的键盘档住输入框或弹起键盘跳动问题
  12. hdu 1680 Cheesy Chess
  13. cassandra cql解析
  14. Carla学习(一) 小车简单直线行走
  15. 深度长文:Power Automation 帮助企业实现数字化转型
  16. 微信域名防封跳转系统的原理,微信域名防封的注意点
  17. 【Unity 框架】QFramework v1.0 使用指南 工具篇:06. UIKit 界面管理快速开发解决方案 | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏
  18. PeopleSoft如何配置SMTP邮件服务
  19. 【多任务学习】Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts KDD18
  20. 恩智浦刘立冬:推动虚拟化的实现,才能进一步实现NFV的部署

热门文章

  1. 军团指挥官(权限题)
  2. 专访:InMobi全球CEO Naveen Tewari
  3. 微信小程序自定义标题栏
  4. ubuntu16.04的WPS不识别jpeg图片格式
  5. BFS——骑士的拯救行动
  6. 近来比较有意思的新形式网络广告
  7. 微笑哥,工作快乐感与快乐企业文化
  8. 思维导图组件@hellowuxin/mindmap的基本使用
  9. 基于ArduPilot Rover 4.1.5版本的汉特四驱小车搭建(1)
  10. 如何向iphone手机里导入音乐?