一. 知识点补充

1. 列表和字典不能在循环过程中进行增删操作,因为列表索引在循环过程会发生改变,字典规定循环不可改变.

删除方法: 将需要大量删除的列表或者字典遍历取出要删除的对象,放入一个空列表,之后对列表进行循环遍历,删除原列表或字典.

2. fromkeys(' a ', ' b ')不会对原来的字典产生影响. 产生新字典(将a迭代变成字典的key, b为每个key的vlaue)

dic = {"a":"123"}

dic.fromkeys("救世主", "暗帝" ) #返回给你一个新字典

print(dic)#输出结果: {'a': '123'}

dic= {"a":"123"}

a= dic.fromkeys("救世主", "暗帝" ) #返回给你一个新字典

print(a)#输出结果: {'救': '暗帝', '世': '暗帝', '主': '暗帝'}

二. set集合: 是一个无序且不重复的元素集合

1. 集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。

集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。

但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值.

2. 创建空集合时,只能用set(),如果用第二种方法s={},创建的实际上是一个空字典

s ={}print(type(s))#输出结果:

a=set('boy')

b=set(['y', 'b', 'o','o'])

c=set({"k1":'v1','k2':'v2'})

d={'k1','k2','k2'}

e={('k1', 'k2','k2')}print(a,type(a))print(b,type(b))print(c,type(c))print(d,type(d))print(e,type(e))#执行结果如下:#{'o', 'b', 'y'} #{'o', 'b', 'y'} #{'k1', 'k2'} #{'k1', 'k2'} #{('k1', 'k2', 'k2')}

3. 增加

a=set('python')

a.add('tina')print(a)

b=set('python')

b.update('tina')print(b)#执行结果如下:#{'tina', 'o', 'p', 'n', 't', 'y', 'h'}#{'o', 'i', 'p', 'a', 'n', 't', 'y', 'h'}

#由以上代码可以看出,add是单个元素的添加,而update是批量的添加。输#出结果是无序的,并非添加到尾部。

4.删除(remove,discard,pop)

c={'p', 'i', 'h', 'n', 'o', 'y', 't'}

c.remove('p')print(c)#输出结果: c={'i', 'h', 'n', 'o', 'y', 't'}

c.discard('p')print(c)#输出结果: c={'i', 'h', 'n', 'o', 'y', 't'}

c.pop()print(c)#输出结果: 执行结果如下: {'i', 'h', 't', 'o', 'y', 'n'}

#当执行c.remove('p','i')和c.discard('p','i')时,报错:TypeError: #remove() takes exactly one argument (2 given),#说明remove和discard删除元素时都只能一个一个的删,同add对应。

#remove,pop和discard的区别:#discard删除指定元素,当指定元素不存在时,不报错;#remove删除指定元素,但当指定元素不存在时,报错:KeyError。#pop删除任意元素,并可将移除的元素赋值给一个变量,不能指定元素移#除。

5. 清空

c={'p', 'i', 'h', 'n', 'o', 'y', 't'}

c.clear()print(c)#执行结果如下:#set()

三. 深浅拷贝

1. 赋值

lst1 = ["金毛狮王", "紫衫龙王", "白眉鹰王", "青衣服往"]

lst2= lst1 #列表, 进行赋值操作. 实际上是引用内存地址的赋值. 内存中此时只有一个列表. 两个变量指向一个列表

lst2.append("杨左使") #对其中的一个进行操作. 两个都跟着变

print(lst2)print(lst1)#输出结果: ['金毛狮王', '紫衫龙王', '白眉鹰王', '青衣服往', '杨左使']#['金毛狮王', '紫衫龙王', '白眉鹰王', '青衣服往', '杨左使']

2. 浅拷贝

lst1 = ["金毛狮王", "紫衫龙王", "白眉鹰王", "青翼蝠王"]#lst2 = lst1.copy() # lst2 和lst1 不是一个对象了

lst2 = lst1[:] #切片会产生新的对象

lst1.append("杨左使")#对lst1进行添加

print(lst1)#打印列表二者不相同

print(lst2)print(id(lst1))#打印lst1和lst2的id,二者是不相同的

print(id(lst2))#输出结果:['金毛狮王', '紫衫龙王', '白眉鹰王', '青翼蝠王', '杨左使']#['金毛狮王', '紫衫龙王', '白眉鹰王', '青翼蝠王']#331794792563784#1794792563848

lst1 = ["超人", "七龙珠", "葫芦娃", "山中小猎人", ["金城武", "王力宏", "渣渣辉"]]

lst2= lst1.copy() #拷贝. 浅拷贝 拷贝第一层

lst1[4].append("大阳哥") #对lst1中的列表内的列表进行添加

print(lst1)print(lst2)#输出结果:#['超人', '七龙珠', '葫芦娃', '山中小猎人', ['金城武', '王力宏', '渣渣辉', '大阳哥']]#['超人', '七龙珠', '葫芦娃', '山中小猎人', ['金城武', '王力宏', '渣渣辉', '大阳哥']]

3. 深拷贝

importcopy

lst1= ["超人", "七龙珠", "葫芦娃", "山中小猎人", ["金城武", "王力宏", "渣渣辉"]]

lst2= copy.deepcopy(lst1) #把lst1扔进去进行深度拷贝 , 包括内部的所有内容进行拷贝

lst1[4].append("大阳哥") #对lst1列表内的嵌套列表进行添加

print(lst1)print(lst2)#输出结果:#['超人', '七龙珠', '葫芦娃', '山中小猎人', ['金城武', '王力宏', '渣渣辉', '大阳哥']]#['超人', '七龙珠', '葫芦娃', '山中小猎人', ['金城武', '王力宏', '渣渣辉']]

*为什么要有深浅拷贝

*拷贝比创建对象的过程要快

python里clear和copy_python (集合和深浅拷贝)相关推荐

  1. python里clear和copy_python之字典

    通过名字引用值得数据结构.这种结构类型称为映射.字典是python中唯一内建的映射类型.字典中的值并没有特殊的顺序,但是都存储在一个特定的键里.键可以是数字,字符串甚至是元组. 某些情况下,字典比列表 ...

  2. 集合(set) 深浅拷贝

    set集合 , 深浅拷⻉以及部分知识点补充 ⼀. 基础数据类型补充 1. join() 加入 split的逆反 把列表转化为字符串 ,也可以遍历字符串 不能是整型 用于转换类型 join 是遍历(迭代 ...

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

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

  4. Python中的赋值、引用和深浅拷贝

    2019独角兽企业重金招聘Python工程师标准>>> 全局变量 在函数之外创建的变量属于main,又被称为全局变量.它们可以在main中的任意函数中访问,与局部变量在函数结束时消失 ...

  5. JavaScript学习笔记(四)---闭包、递归、柯里化函数、继承、深浅拷贝、设计模式

    JavaScript学习笔记(四)---闭包.递归.柯里化函数.继承.深浅拷贝.设计模式 1. 匿名函数的使用场景 2.自运行 3.闭包 3.1前提: 3.2闭包 4.函数对象的三种定义方式 5.th ...

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

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

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

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

  8. 集合、深浅拷贝、文件操作(读、写、追加)函数初识(参数)

    小数据池 #int ==比较数值 is 比较内存地址 id 测试内存地址 #str 不能含有特俗字符 单个元素*数字,不能超过21 i1 = 'a'*20 i = 'a'*20 id一样 i1 = ' ...

  9. set集合、深浅拷贝以及部分知识点补充

    基础数据类型补充 字符串的拼接 lis = ["李嘉诚", "麻花藤", "黄海峰", "刘嘉玲"]s = " ...

最新文章

  1. poj 1935(搜索+回溯)
  2. 深入浅出Paxos分布式一致性算法
  3. OpenCV霍夫直线houghlines点集的实例(附完整代码)
  4. TouchAction实现连续滑动设置手势密码
  5. 统计学习方法 第九章笔记: EM 算法
  6. 利用chrome的Timeline观测系统的内存回收逻辑
  7. 网络协议分层及报文格式大全
  8. 精打细算油盐_Java:ChronicleMap第1部分,精打细算
  9. 【技术解决方案】优化FFmpeg编码器参数设置
  10. FTP服务器构建与维护,ftp服务器的搭建与三种访问途径
  11. 【03】创建型-原型模式
  12. 【Esri联邦大会】看点13: “NOAA National Hurricane Center”:应急应用
  13. linux mentohust dhcp,校园网锐捷 openwrt mentohust 成功开启IPv6
  14. 我们为何要选择使用LINUX?--大家自己体会
  15. 《2016-2017年全球竞争力报告》述评
  16. java中math中的指数是,java指数运算math
  17. 如果一个n位正整数等于它的n个数字的n次方和,则称该数为n位自方幂数。编程计算并输出所有的n的所有情况。
  18. 【矩阵篇】九宫图/n宫图生成——Merzirac法生成奇阶幻方 Python实现
  19. U盘重装官网纯净系统win10
  20. Windows11打不开Windows安全中心解决方法

热门文章

  1. InputStream复制
  2. ZYNQ系列(十一)ZYNQ 使用RS9900 USB转网口
  3. React 阻止冒泡失效
  4. 送你一份入门前端学习路线图
  5. 生成旋律,为作曲家提供最初的灵感,人工智能正在重塑创造音乐的方式
  6. QeePHP框架学习笔记(自定义SQL执行)
  7. 覆盖3700家机构!人大金仓联合卫宁健康助力广州市妇幼保健系统信创升级
  8. Cesium空间分析-飞行路线
  9. android 获取已安装应用(App)列表
  10. python元数据相加函数_【Nuke教程】通过Python获取素材Metadata(元数据)