Python--day06(深浅拷贝、元组、字典、集合)
1. 深浅拷贝
1.1 值拷贝
s1直接将ls中存放的地址拿过来
s1内部的值发生任何变化,s2都会随之变化
s1 = ['1','2','3','a']s2 = s1print(id(s1),id(s2)) # 1986703930376 1986703930376s1[2] = 'b'print(id(s1),id(s2)) # 1986703930376 1986703930376
1.2 浅拷贝
s2 = s1.copy()
新开辟列表空间,但列表中的地址都是直接从ls列表中拿来
s1内部的可变类型值发生改变,ls2会随之变化
s1 = ['1','2','3','a',['1','2']]s2 = s1.copy()s1[4][0] = 4print(s1,id(s1)) # ['1', '2', '3', 'a', [4, '2']] 2143274411208print(s2,id(s2)) # ['1', '2', '3', 'a', [4, '2']] 2143275228424

1.3 深拷贝
新开辟列表空间,s1列表中的不可变类型的地址直接拿过来,但是可变类型的地址一定重新开辟空间
from copy import deepcopys1 = ['1','2','3','a',['1','2']]s2 = deepcopy(s1)s1[4][0] = 4print(s1) # ['1', '2', '3', 'a', [4, '2']]print(s2) # ['1', '2', '3', 'a', ['1', '2']]

2. 元组类型
元组:可以理解为不可变的列表
1.值可以为任意类型
2.可以存放多个值 - 可以进行成员运算
3.可以存放重复的值 - 可以计算成员出现的次数
4.有序存储 - 可以通过索引取值,可以切片
2.1 元组的常用操作
2.1.1 索引取值
t = ('1','2','3','a')print(t[0]) # 1
2.1.2 运算(拼接)
t1 = ('1','2','3','a')t2 = (1,2,3)print(t1 + t2) # ('1', '2', '3', 'a', 1, 2, 3)
2.1.3 长度
t1 = ('1','2','3','a')print(len(t1)) # 4
2.1.4 切片
t1 = ('1','2','3','a')print(t1[::-1]) # ('a', '3', '2', '1')
2.1.5 成员运算
t1 = ('1','2','3','a')print('c' in t1) # False
2.1.6 for循环
t1 = ('1','2','3','a')for k in t1: print(k)
3. 字典类型
容器(集合):存放多个值的变量
单列容器(系统中的单列容器很多):list | tuple
双列容器(map):只有dict,存放数据 成对出现,dict存放数据采用 key-value键值对方式
字典中的key可以为什么类型:key必须为不可变类型
-- key是取value的唯一依据,key一旦被确定,就需要唯一确定(不能被改变)
字典中的value可以为什么类型:value可以为任意类型
-- value是用来存放世间所有存在的数据
key要确保唯一性,不能重复,值可以重复,并且可以被改变 => 字典为可变类型
3.1 字典的操作(增删改查)
3.1.1 增
dic = {'a':1,'b':2,'c':3}dic['d'] = 4print(dic) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
3.1.2 改
dic = {'a':1,'b':2,'c':3}dic['b'] = '4'print(dic) # {'a': 1, 'b': '4', 'c': 3}
3.1.3 查
dic = {'a':1,'b':2,'c':3}print(dic['c']) # 3
3.1.1 删
dic = {'a':1,'b':2,'c':3}print(dic.pop('a')) # 1print(dic) # {'b': 2, 'c': 3}
3.2 字典的其他方法
3.2.1 更新:
dic = {'a':1,'b':2,'c':3}d = {'a':5,'d':10}dic.update(d)print(dic) # {'a': 5, 'b': 2, 'c': 3, 'd': 10}
3.2.2 带默认值的新增: 新增key,key已有,啥事不干,没有添加key,值就是第二个参数
dic = {'a':1,'b':2,'c':3}dic.setdefault('x')print(dic) # {'a': 1, 'b': 2, 'c': 3, 'x': None}dic.setdefault('y',100)print(dic) # {'a': 1, 'b': 2, 'c': 3, 'x': None, 'y': 100}
3.2.3 字典的循环
1.直接循环,就是循环得到keydic = {'a':1,'b':2,'c':3}for k in dic: print(k,end=' ') # a b c
2.循环keys
dic = {'a':1,'b':2,'c':3}for k in dic.keys(): print(k,end=' ') # a b c
3.循环values
dic = {'a':1,'b':2,'c':3}print(dic.values()) # dict_values([1, 2, 3])for k in dic.values(): print(k,end=' ') # 1 2 3
同时循环key和value (key, value)
dic = {'a':1,'b':2,'c':3}print(dic.items()) # dict_items([('a', 1), ('b', 2), ('c', 3)])a, b = (1, 2)print(a, b) # 1 2for res in dic.items(): print(res,end=' ') # ('a', 1) ('b', 2) ('c', 3)
重点:
dic = {'a':1,'b':2,'c':3}for k,v in dic.items(): print(k,v) # a 1 b 2 c 3
4. 集合类型
4.1 概念:
概念:
1.set为可变类型 - 可增可删
2.set为去重存储 - set中不能存放重复数据
3.set为无序存储 - 不能索引取值
4.set为单列容器 - 没有取值的key
总结:set不能取值
4.2 集合的增删
4.2.1 增
s = {'1','2','3','a','b','c'}s.add('d')s.add('1')print(s) # {'b', '3', '2', 'c', 'd', '1', 'a'}
s = {'1','2','3','a','b','c'}s.update({'q','w','e'})print(s) # {'a', '2', 'q', '1', '3', 'c', 'w', 'e', 'b'}
4.2.1 删
s = {'1','2','3','a','b','c'}s.remove('1')print(s) # {'3', '2', 'a', 'b', 'c'}s.clear()print(s) # set()
4.3 集合的运算
交集:两个都有 &
s1 = {'1','2','3','a'}s2 = {'a','b','c','1','2'}print(s1 & s2) # {'a', '1', '2'}print(s1.intersection(s2)) # {'a', '2', '1'}
合集:两个的合体 |
s1 = {'1','2','3','a'} s2 = {'a','b','c','1','2'}print(s1 | s2) # {'1', '2', 'b', 'a', 'c', '3'}print(s1.union(s2)) # {'1', '2', 'b', 'a', 'c', '3'}
对称交集:抛出共有的办法的合体 ^
s1 = {'1','2','3','a'}s2 = {'a','b','c','1','2'}print(s1 ^ s2) # {'c', '3', 'b'}print(s1.symmetric_difference(s2)) # {'c', '3', 'b'}
差集:独有的
s1 = {'1','2','3','a'}s2 = {'a','b','c','1','2'}print(s1 - s2) # {'3'}print(s1.difference(s2)) # {'3'}
比较:前提一定是包含关系
s1 = {'1','2','3','a'}s2 = {'a','b','c','1','2'}s3 = {'1','2'}print(s1 > s2) # Falseprint(s1 > s3) # True
Python--day06(深浅拷贝、元组、字典、集合)的更多相关文章
- python 深浅拷贝 元组 字典 集合操作
深浅拷贝 :值拷贝 :ls = [,,] res = ls 则print(res)就是[,,] 浅拷贝 :ls.copy() 深拷贝:ls3 = deepcopy(ls) # 新开辟列表空间,ls列表 ...
- Python 基础-python-列表-元组-字典-集合
列表格式:name = []name = [name1, name2, name3, name4, name5] #针对列表的操作 name.index("name1")#查询指定 ...
- **python中列表 元组 字典 集合
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- python3笔记十八:python列表元组字典集合文件操作
一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle #数据持久性模块 #封装的方法def OptionData(data,path): # ...
- python03-break、continue、for循环、数据bytes类型、字符串与字节的关系、变量指向与深浅拷贝、set集合、文件操作
目录: 1.break.continue 2.for循环 3.数据bytes类型 4.字符串与字节的关系 5.变量指向与深浅拷贝 6.set集合 7.文件操作 一.break.continue bre ...
- Python原理 -- 深浅拷贝
python原理 -- 深浅拷贝 从数据类型说开去 str, num : 一次性创建, 不能被修改, 修改即是再创建. list,tuple,dict,set : 链表,当前元素记录, 下一个元素的位 ...
- 元组/字典/集合内置方法+简单哈希表(day07整理)
目录 二十三.元组内置方法 二十四.字典数据类型 二十五 集合内置方法 二十五.数据类型总结 二十六.深浅拷贝 补充:散列表(哈希表) 二十三.元组内置方法 什么是元组:只可取,不可更改的列表 作用: ...
- python_列表——元组——字典——集合
列表——元组——字典——集合: 列表: # 一:基本使用# 1.用途:存放多个值 # 定义方式:[]内以逗号为分隔多个元素,列表内元素无类型限制# l=['a','b','c'] #l=list([' ...
- Python的深浅拷贝
Python的深浅拷贝 深浅拷贝 1. 赋值,对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量并不是复制一份内容 list1 = [']] list2 = list1 p ...
随机推荐
- 阿里巴巴excel工具easyexcel 助你快速简单避免OOM
Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有 ...
- 第5章 简单的C程序设计——循环结构程序设计
5.1 为什么需要循环控制 前面介绍了程序中常用到的顺序结构和选择结构,但是只有这两种结构是不够的,还需要用到循环结构(或称重复结构).因为在程序所处理的问题中常常遇到需要重复处理的问题. 循环结构和 ...
- Jason Wang:记录自己所想所得(第一次作业)
这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 我在这个课程的目标是 学会现代软件工程的思想,运用到实际中去 这个作业在哪个具体方面帮助我实现目标 ...
- 用ASP.NET Core 2.1 建立规范的 REST API -- 翻页/排序/过滤等
本文所需的一些预备知识可以看这里: http://www.cnblogs.com/cgzl/p/9010978.html 和 http://www.cnblogs.com/cgzl/p/9019314 ...
- VS2017 无法连接到Web服务器“IIS Express”终极解决方案
今天日了gou了,一大早打开VS2017的时候出现无法连接到Web服务器"IIS Express"的错误,然后必应了一下,再谷歌了一下找到的解决方法也都千篇一律,奈何都没能解决,最 ...
- ZooKeeper 03 - ZooKeeper集群的脑裂问题 (Split Brain问题)
目录 1 ZooKeeper的主从机制 2 什么是ZooKeeper的脑裂 2.1 脑裂现象的表现 2.2 为什么会出现脑裂 3 ZooKeeper如何解决"脑裂" 3.1 3种可 ...
- 【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?
简介 Floyd-Warshall算法(Floyd-Warshall algorithm),是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似.该算法名称以 ...
- [开源]基于Log4Net简单实现KafkaAppender
背景 基于之前基于Log4Net本地日志服务简单实现 实现本地日志服务,但是随着项目开发演进,本地日志服务满足不了需求,譬如在预发布环境或者生产环境,不可能让开发人员登录查看本地日志文件分析. Kaf ...
- 微信公众号开发C#系列-5、用户和用户组管理-支持同步
1.概述 眼前时下流行的经济有个叫粉丝经济,粉丝带动收益.一个好运营良好的公众号肯定会有一大批的粉丝团,如何挖掘粉丝来产生效益,是微信营销的关键.微信公众号后台本身提供了粉丝(用户)与用户分组的管理, ...
- 动手写 js 沙箱
本文由云+社区发表 作者:ivweb villainthr 市面上现在流行两种沙箱模式,一种是使用iframe,还有一种是直接在页面上使用new Function + eval进行执行. 殊途同归,主 ...