集合、深浅copy
集合set:
集合也和列表数组一样有增加,但是集合是真正的没有顺序的 所以集合无法查找的,并且集合的外观你看着好像是字典和列表的组合,因为它是用字典的括号一样 ,但是又是里面并没有键值对 只是一个一个的元素来存储
set内的元素必须是不可以变的
frozenset 把一个动态集合变成静态集合 就是把一个可变的集合变成不可变的
s = {, , , , }
s.add()
frozenset(s) #直接把上面可变的集合转化为不可变的
用frozenset转化后的 集合不可以对他进行增删改查
功能:1、去重 (如果你把字典中去除以后 ,就可以把字典中重复的内容给剔除掉) list(set) set(list)
2、测试关系
集合的增加add和update (因为集合是无序的所以它的增加也是无序的)
>>> set ={, , , }
>>> set.add('女神')
>>> print(set)
{'女神', , , , }
>>>
update 是迭代添加
>>> set.update('abc')
>>> print(set)
{, , , , 'b', 'c', 'a', '女神'}
>>>
集合的删除 pop随机删除 clear清空集合 del删除集合 remove选择元素删除
交集:&
并集 |
反交集:^
差集:set1 -set2
元组的补充:
如果元组里面只有一个元素 那么要在这个元素后面加个括号 不然这个元组的显示就会只显示这个元素 不显示最外面的括号
>>> tu = ()
>>> print(tu)
#只显示这么一个元素 元组最外面的括号没有了
>>>
上面可以看到如果不在唯一个元素后面加上逗号就会只显示这个逗号本身 下面我们加上逗号试试
>>> tu1 = ( ,)
>>> print(tu1)
(,) #可以看出加了这个括号就把括号给打印出来了
>>>
还有在循环的时候最好不要对所循环的列表进行删除 如果增加删除的会把列表的索引进行
#错误的操作 li =[, , , , ]
for i in len(li):
if i % == :
del[i] #这个操作的话每一次循环它里面的元素都在被改变 因为你删除的是它每一次循环的不同的元素
print(li)
如果这样的话 用切片删除就可以了 切片删除就不会造成这种错误
li =[, , , , ] for i in range(len(li)-, -, -):
if i % == :
del li[i]
print(li)
深浅copy;
copy 不是指向同一个地址值,而是在内存中又开辟了一个内存空间
对于浅copy来说 第一层创建的是新的内存地址值,而从第二层开始,指向的都是同一个内存地址
所以 对于第二层以及更深层次来说 保持一致
>>> l1 = [1, 2, 3,[1, 2, 3, 4], 4]
>>> l2 =l1.copy()
>>> print(l1)
[1, 2, 3, [1, 2, 3, 4], 4]
>>> print(l2)
[1, 2, 3, [1, 2, 3, 4], 4]
>>>
#你们看这个虽然数值一样但是地址值不同 >>> print(id(l1))
2158771026056
>>> print(id(l2))
2158770945224
>>>
大家看浅copy是虽然数值一样,但是其实他们的地址值是不同的,但是他们的里面的相同的列表或者集合内的元素的地址值相同 >>> l1 =[1, 2, 3, [1, 2, 3, 4],4]
>>> l2 = l1.copy()
>>> print(l1)
[1, 2, 3, [1, 2, 3, 4], 4]
>>> print(l2)
[1, 2, 3, [1, 2, 3, 4], 4]
>>> print(id(l1))
2348230553736
>>> print(id(l2))
2348231143688
>>> #大家可以看到他们的地址值不同
>>> print(id(l1[3]))
2348230547848
>>> print(id(l2[3]))
2348230547848
>>> #而现在 他么的里面相同的数值的地址值又相同了
deepcopy
对于深copy来说 两个是完全独立的,改变任意一个的任何元素 (无论多少层) 另一个绝不改变
深copy的 同时要先把copy的模块导入进去 因为你要导入进去才能用
import copy
>>> import copy
>>> li = [1, 2, 3, [1, 3]]
>>> l1 = copy.deepcopy(li)
>>> print(li)
[1, 2, 3, [1, 3]]
>>> print(l1)
[1, 2, 3, [1, 3]]
>>> print(id(li))
2227247224456
>>> print(id(l1))
2227201063240
>>> print(id(li[3]))
2227247821064
>>> print(id(l1[3]))
2227247224264
>>>
数据类型转化成bool 为False: 0 空字符串 空列表 空字典 空元组
int对应的是0 字符串的False是空字符串 列表对应的Flase是空列表,字典对应的False是空字典 元组对应的False是空元组
集合、深浅copy的更多相关文章
- Python 集合 深浅copy
一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...
- python集合深浅copy
一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...
- 集合 & 深浅copy
集合: 特点:集合是可变的数据类型,但他里面的元素必须是不可变的数据类型,无序,不可重复. 创建: set1 = set({1,2,3}) 或者直接创建set2 = {1,2,3} 集合的增删查: 增 ...
- Python基础学习Day7 基础数据类型的扩展 集合 深浅copy
一.基础数据类型的扩展 1.1GBK ---> UTF - 8 # str --->bytes s1 = '太白' # 字符串是unicode编码 b1 = s1.encode('gbk' ...
- 知识点补充,set集合,深浅copy
一:对之前知识点的补充 1;字符串(str)中的join方法.把列表转换成字符串 2;列表list[ ]和字典dic{ }在循环过程中不能字节删除.需要把要删除的内容记录在新列表中.然后在循环新列表, ...
- python之路(集合,深浅copy,基础数据补充)
一.集合:类似列表,元组的存储数据容器,不同点是不可修改,不可重复.无序排列. 1.创建集合: (1).set1 = {'abby', 'eric'} result:{'eric', 'abby'} ...
- 003_python的str切片,str常用操作方法,for循环,集合,深浅copy
基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余 + - * / ** %... 2.bool布尔值 判断真假以及作为条件变量 3.s ...
- python基础3(元祖、字典、深浅copy、集合、文件处理)
本次内容: 元祖 字典 浅copy和深copy 集合 文件处理 1.1元祖 元祖(tuple)与列表类似,不同之处在于元祖的元素不能修改,元祖使用小括号(),列表使用方括号[].元祖创建很简单,只需要 ...
- Python 第三篇(下):collections系列、集合(set)、单双队列、深浅copy、内置函数
一.collections系列: collections其实是python的标准库,也就是python的一个内置模块,因此使用之前导入一下collections模块即可,collections在py ...
- Python基础数据类型之集合以及其他和深浅copy
一.基础数据类型汇总补充 list 在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错(可以从后向前循环删除,这样不会改变未删元素的索引). 错误示范: lis = [,,, ...
随机推荐
- HUE配置文件hue.ini 的pig模块详解(图文详解)(分HA集群和非HA集群)
不多说,直接上干货! 一.默认的pig配置文件 ########################################################################### ...
- HUE配置文件hue.ini 的sqoop模块详解(图文详解)(分HA集群和非HA集群)
不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...
- Idea与Eclipse操作代码的快捷方式
1.Idea格式化代码的快捷键:ctrl+alt+L 2.在IDEA中创建了properties文件,发现默认中文不会自动进行unicode转码.如下 在project settings - File ...
- HttpClient使用详细教程
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且 ...
- 向已有的table中插入数据
table: <table id="seleted-table" class="table table-bordered table-hover" sty ...
- Nexus centos 安装
目录 1.安装nexus 2.启动nexus 2.1启动服务器 2.2以后台进程启动: 2.3web访问 3.搭建私服 3.1 界面元素介绍 3.2 仓库集合的界面 3.3 通过网页方式将jar包上传 ...
- R语言格式化数字和字符串format函数
数字和字符串可以使用 format()函数的格式化为特定样式. 语法 format()函数的基本语法是: format(x, digits, nsmall,scientific,width,justi ...
- Object的原型拷贝-create、assign、getPrototypeOf 方法的结合
一.实现原型拷贝 1.1.代码 tips:为了体现原型链,写了继承实现的代码,这部分可跳过- <script> /* 创建包含原型链的实验对象obj1-- start */ ...
- Mysql的with rollup分组统计功能(5.1以上版本)
RollUp是上卷功能,类似于数据挖掘中的上卷操作. ROLLUp的功能和Order by功能是互斥的. mysql> SELECT year, SUM(profit) FROM sales G ...
- 五、standalone运行模式
在上文中我们知道spark的集群主要有三种运行模式standalone.yarn.mesos,其中常被使用的是standalone和yarn,本文了解一下什么是standalone运行模式,它的运行流 ...