一、深浅拷贝

1.  值拷贝 ls1 = ls2  不开辟空间,指针跟着走。(直接将ls1中存放的地址拿过来,内存中不会开辟新的空间,所以你怎么变,我也跟着变。)(ls1内部的所有类型的值发生改变,ls2都不会随之变化)

2.  浅拷贝 ls3 = ls1.copy()  ls3新开辟空间,但数据内里面每个元素的地址同ls1。所以ls1中不可变类型变了,相当于ls1重新指到了一个新的地址,ls3还指向原来的那个地址。如果s1中可变类型的值变了,因为地址没变,只是值变了。所以ls3中可变类型的值也会一起变。(ls1内部的可变类型值发生改变,ls3会随之变化)

3. 深copy :ls4 = deepcopy(ls1)   ls4中所有的数据都会重新开辟一个全新的空间,由于有优化机制,所以不可变类型会指向同一个地址。又由于不可

变类型值变了,地址一定会变,所以 deepcopy从内致外都不会受s1的影响,你怎么变跟我没关系。(ls1内部的所有类型的值发生改变,ls4都不会随之变化)

二、数据用法:   元组、字典、集合set

元组: 可理解为不可变列表

1.值可以为任意类型

2. 可以存放多个值------可以进行成员运算

3. 可以存放重复的值 - 可以计算成员出现的次数

4. 有序存储 - 可以通过索引取值,可以切片

常用操作:1. 索引取值,正反取:print(t1[1], print(t1[-3])

2. 运算(拼接),print((1, 2) + (2, 3))

3. 长度 len(t1)

4. 切片 print((2, 1, 3)[::-1])

5. 成员运算 print(True in t1);  print(False in t1)  # False == 0, t1中如果有0或False,该结果都是True

6. for循环 for obj in t1: print(obj, end=" ")

方法: count :  print(t1.count(0))  # 对象0在元组中出现的次数;

index:   print(t1.index(123, 4, len(t1))) # 对象123在区间4~末尾第一次出现的索引

字典相关  概念 :容器(集合):存放多个值的变量

单列容器(系统中的单列容器很多):list | tuple

双列容器(map):只有dict,存放数据 成对出现,dict存放数据采用 key-value键值对方式

字典中的key必须为不可变类型,因为key是取value的唯一依据,key一旦被确定,就不能被改变,所以只能是不可变类型

字典中的value可以为任意类型,value是用来存放世间所有存在的数据

key要确保唯一性,不能重复,值可以重复,并且可以被改变以此推到 => 字典为可变类型

dic = {'a': 10, 1: 20, True: 30, (): 40} # 1和True都是1,key具有唯一性,所以只保留最后一次值
                           print(dic) # {'a': 10, 1: 30, (): 40}

字典的定义:1.空字典{}、2.用map映射创建字典d3 = dict({'a': 1, 'b': 1})、

3.用关键字赋值方式:d4 = dict(name='Bob', age=18)  # 参数=左侧的名字就是合法的变量名,都会被转化为字符串形式的key

4. 创建有多个key值采用默认值的方式: 默认值不写默认None,也可以自定义value:d5 = {}.fromkeys('abc', 0)---返回一个新字典。

字典的操作  增/改: 字典名[key] = 值 => key已存在就是修改值,不存在就是新增值:dic['c'] = 3

查:字典名[key]:只能查找已有的key,没有崩溃,

引入   dict.get(key, default =None)       key -- 字典中要查找的键     default -- 如果指定键的值不存在时,返回该默认值.

清空 dic.clear()

pop(k):删除指定key的value并返还删除的value  :res = dic.pop('a')

从dic末尾删除,返还(key, value)形成的元组: res = dic.popitem()

其他方法:  1.更新 dic.update(d)  原字典中,有相同的键,value就以新的 覆盖,没有键,就新增进去,原字典中多出来的就保留。----将一个字典添加到另一字典中

2.带默认值的新增 dic.setdefault('z', 100): 新增key,key已有,啥事不干,没有添加key,及value

3.字典的循环: for 得到key

4. 循环keys  效用等同for: for k in dic.keys()

5. 循环values :  for v in dic.values()

6. 同时循环key和value 得到(key, value) :  for res in dic.items()

7. 重点:for k, v in dic.items()  得到key, value  等同解压赋值

集合类型  空集合:不能用{},因为用来标示空字典,表示形式 :s = set()

定义:1.set为可变类型 - 可增可删  2. set自带去重存储 - set中不能存放重复数据

3. set为无序存储 - 不能索引取值

4. set为单列容器 - 没有取值的key-----不能取值

方法:1.增  s.add('1')

2. s.update({'2', '3'}) ,有就什么都不干,没有就新增

3. 合集:两个的合体 |    print(py | Lx) 、  print(py.union(lx))

4. 对称交集 抛出共有的合体 ^ : print(py ^ lx)、print(py.symmetric_difference(lx))

5. 差集:独有的 print(py.difference(lx))----相当于减法

6. 比较 :前提一定是包含关系:s1 = {'1', '2'}  ; s2 = {'2'}   ;print(s1 < s2)

转载于:https://www.cnblogs.com/qingqinxu/p/10733042.html

python学习Day6 元组、字典、集合set三类数据用法、深浅拷贝相关推荐

  1. python中列表 元组 字典 集合的区别

    参考文章:python中列表 元组 字典 集合的区别

  2. python初级6元组字典集合

    1.元组简介 元组基本介绍 a=() print(type(a)) <class 'tuple'> 元组类型 ●元组表现形式tuple ●元组也可以通过索引取值 还要注意 print(a[ ...

  3. python入门——列表+元组+字典+集合

    列表 列表是最常用的python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 1.列表嵌套(相当于二维数组) a=["b",'c','d'] ...

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

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

  5. python高级数据筛选_python高级编程,列表字典集合相关的数据筛选

    每天坚持学习一点,进行数据复盘,学习就是不一样 python高级编程,列表字典集合相关的数据筛选 #先看看第一个列表筛选 2017 9 16 高效python编程的一个案例:from random i ...

  6. Python学习第七课-元组字典集合

    Python学习第七课-元组&字典&集合 一.元组 1.1元组简介 1.2元组的拆包 1.3字符串拆包 1.4列表的拆包 1.5拆包练习 二.字典的简介 2.1介绍 2.2操作 三.字 ...

  7. python 列表、元组、集合、字典、循环遍历数据结构

    python 列表.元组.集合.字典.数据结构的循环(整理自python文档) 列表-list-用方括号标注,逗号分隔的一组值 list 的 方法 对list添加.插入.删除.查找.排列.翻转 lis ...

  8. Python元组字典集合

    元组&字典&集合 一.tuple元组 1.概述 和列表相似,本质上是一种有序的集合 元组和列表的不同之处: ​ a.列表:[ ] 元组:( ) ​ b.列表中的元素可以进行增加和删除操 ...

  9. Python学习笔记:字典(dict)

    Python学习笔记:字典(dict) 字典(dict)可能是最重要的Python内置数据结构,更常用的名称是哈希映射(hash map)或关联数组(associate array).它是键值对的集合 ...

  10. Python 字符串/列表/元组/字典之间的相互转换 - Python零基础入门教程

    目录 一.字符串 str 与列表 list 1.字符串转列表 2.列表转字符串 二.字符串 str 与字典 dict 1.字符串转字典 2.字典转字符串 三.列表 list 与字典 dict 1.列表 ...

最新文章

  1. AJAX中UPDATEPANEL配合TIMER控件实现局部无刷新
  2. 选择“关机”还是“睡眠”?
  3. 【Qt】MainWindow窗口状态栏
  4. SAP标准培训课程C4C10学习笔记(一)第一单元
  5. C++编程经验总结1
  6. java http 返回码_【Java】Http返回状态码
  7. Java基础篇3——流程控制
  8. android 注册静态广播接收器VS注册动态广播接收器
  9. 计算机键盘英语单词怎么写,输入单词_如何用电脑键盘打出英文单词需要那种只要一个字母就可以自己弹出单词的那种_淘题吧...
  10. 第二章注解深入浅出(三、插桩)
  11. 关于Maxon电机整定的问题记录
  12. java 支持 超大上G , 多附件上传
  13. 夜天之书 #61 Maintainer 的标准
  14. Qt5Core上的CMake错误
  15. 自学 iOS 开发的一些经验 - 转自无网不剩的博客
  16. 建模笔记——熵值法熵权法(python)
  17. 电商网站业务流程图示例
  18. 百度网盘导致SqlServer占用CPU过高
  19. 【鸟哥私房菜】读书笔记
  20. 新疆计算机证相关信息技术,2020新疆特岗教师小学信息技术考什么?

热门文章

  1. python中new方法详解及_Python中__new__与__init__方法的区别详解
  2. html文本框自动填充,html利用文本框input自动填写当前日期
  3. devc 能优化吗_小网站能做seo优化吗?如何为小公司网站做seo优化?
  4. 7-3 小L的难题 (15 分)
  5. python逢7跳过_python学习笔记(七)break 和continue
  6. c++时间类型详解 time_t
  7. html项目案例_非常时期的健身IP案例-营销100案之8
  8. c语言自治区二级考试题库,新疆自治区计算机二级c语言考试题库---副本.pdf
  9. Python绘图新冠病毒COVID-19
  10. 算法:回文数字9. Palindrome Number