python学习Day6 元组、字典、集合set三类数据用法、深浅拷贝
一、深浅拷贝
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)
python学习Day6 元组、字典、集合set三类数据用法、深浅拷贝的更多相关文章
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- **python中列表 元组 字典 集合
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...
- Python学习---列表/元组/字典/字符串/set集合/深浅拷贝1207【all】
1.列表 2.元组 3.字典 4.字符串 5.set集合 6.深浅拷贝
- Python入门基础学习(列表/元组/字典/集合)
Python基础学习笔记(二) 列表list---[ ](打了激素的数组,可以放入混合类型) list1 = [1,2,'请多指教',0.5] 公共的功能: len(list1) #/获取元素 lis ...
- python 中列表 元组 字典 集合的区别
先看图片解释 (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复 ...
- python的列表元组字典集合比较
定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'],7- ...
- Python学习-列表元组字典操作
一.列表 列表是Python的基本数据类型之一,它是以 [] 括起来的,内部成员用逗号隔开.里面可以存放各种数据类型. # 例如: list2 = ['jason', 2, (1, 3), ['war ...
- python3笔记十八:python列表元组字典集合文件操作
一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle #数据持久性模块 #封装的方法def OptionData(data,path): # ...
- python学习6—数据类型之集合与字符串格式化
python学习6—数据类型之集合与字符串格式化 1. 使用id()可以查看一个变量的内存地址: name = 'alex' id(name) 2. 进制转换 十进制转换为二进制等: a = 10 # ...
随机推荐
- 批量ping测试的脚本
#脚本开始 #!/bin/bash HOSTLIST=`cat /usr/local/ipaddrs.txt` for IP in $HOSTLIST do ping -c 3 -i 0.2 -W 3 ...
- 【java】多态
多态:某一类事物的多种存在形态 如:动物中的猫和狗猫对象对象的类型是猫类型,即 cat c1= new cat()但同时猫也是动物中的一种,也可以把猫成为动物,即 animal c1= new cat ...
- ajax高级操作
$('#ajax_submit').click(function () { $.ajax({ 'url':'/app_ajax', 'type':'post', 'data':$("#f1& ...
- vue项目做seo优化(prerender-spa-plugin vue-meta-info)
今天公司考虑seo设计方案,服务端渲染(ssr)和 预渲染的方式,不过只是打算对几个简单的页面seo,所以选择了使用预渲染的方式,以下是实现过程中遇到的问题,供大家查看,有不对的地方请指正: 使用pr ...
- AMQP close-reason, initiated by Peer, code=406
错误: AMQPclose-reason, initiated by Peer, code=406, text="PRECONDITION_FAILED -inequivalent arg ...
- verilog中24LC04B iic(i2c)读写通信设计步骤,以及程序常见写法错误。
板子使用的是黑金的是xilinx spartan-6开发板,首先准备一份24LC04B芯片资料,读懂资料后列出关键参数. 如下: 1.空闲状态为SDA和SCL都为高电平 2.开始状态为:保持SCL,S ...
- 浅谈C#在网络波动时防重复提交
前几天,公司数据库出现了两条相同的数据,而且时间相同(毫秒也相同).排查原因,发现是网络波动造成了重复提交. 由于网络波动而重复提交的例子也比较多: 网络上,防重复提交的方法也很多,使用redis锁, ...
- 工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型
说到编程语言,总是绕不开数据类型,因为数据类型决定了数据可以进行什么样的操作.同时数据类型 从广义上来说是一种数据结构,在过程式编程的过程中,曾经有过这样一种说法: 程序 = 数据结构 + 算法 可见 ...
- webRTC中音频相关的netEQ(二):数据结构
上篇(webRTC中音频相关的netEQ(一):概述)是netEQ的概述,知道了它主要是用于解决网络延时抖动丢包等问题提高语音质量的,也知道了它有两大单元MCU和DSP组成.MCU 主要是把从网络收到 ...
- Spring Cloud Turbine微服务集群实时监控
本文代码下载地址: https://gitlab.com/mySpringCloud/turbine SpringBoot版本:1.5.9.RELEASE (稳定版) SpringCloud版本:Ed ...