集合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的更多相关文章

  1. Python 集合 深浅copy

    一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...

  2. python集合深浅copy

    一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...

  3. 集合 & 深浅copy

    集合: 特点:集合是可变的数据类型,但他里面的元素必须是不可变的数据类型,无序,不可重复. 创建: set1 = set({1,2,3}) 或者直接创建set2 = {1,2,3} 集合的增删查: 增 ...

  4. Python基础学习Day7 基础数据类型的扩展 集合 深浅copy

    一.基础数据类型的扩展 1.1GBK ---> UTF - 8 # str --->bytes s1 = '太白' # 字符串是unicode编码 b1 = s1.encode('gbk' ...

  5. 知识点补充,set集合,深浅copy

    一:对之前知识点的补充 1;字符串(str)中的join方法.把列表转换成字符串 2;列表list[ ]和字典dic{ }在循环过程中不能字节删除.需要把要删除的内容记录在新列表中.然后在循环新列表, ...

  6. python之路(集合,深浅copy,基础数据补充)

    一.集合:类似列表,元组的存储数据容器,不同点是不可修改,不可重复.无序排列. 1.创建集合: (1).set1 = {'abby', 'eric'} result:{'eric', 'abby'} ...

  7. 003_python的str切片,str常用操作方法,for循环,集合,深浅copy

    基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余  + - * / ** %... 2.bool布尔值 判断真假以及作为条件变量 3.s ...

  8. python基础3(元祖、字典、深浅copy、集合、文件处理)

    本次内容: 元祖 字典 浅copy和深copy 集合 文件处理 1.1元祖 元祖(tuple)与列表类似,不同之处在于元祖的元素不能修改,元祖使用小括号(),列表使用方括号[].元祖创建很简单,只需要 ...

  9. Python 第三篇(下):collections系列、集合(set)、单双队列、深浅copy、内置函数

     一.collections系列: collections其实是python的标准库,也就是python的一个内置模块,因此使用之前导入一下collections模块即可,collections在py ...

  10. Python基础数据类型之集合以及其他和深浅copy

    一.基础数据类型汇总补充 list  在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错(可以从后向前循环删除,这样不会改变未删元素的索引). 错误示范: lis = [,,, ...

随机推荐

  1. GitLab 项目创建后地址由Localhost改为实际IP的方法

    进入终端修改以下文件即可. vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml ## GitLab settings git ...

  2. 四大组件之Service

    1 通过startService 1.1 与调用者相对独立,没有返回,用于播放音乐,下载文件 1.2 如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行.下次 ...

  3. 解决Ubuntu 18.04中文输入法的问题

    https://ywnz.com/linuxjc/1637.html

  4. Django时间与时区设置问题

    在Django的配置文件settings.py中,有两个配置参数是跟时间与时区有关的,分别是TIME_ZONE和USE_TZ 如果USE_TZ设置为True时,Django会使用系统默认设置的时区,即 ...

  5. 2-6 js基础-ajax

    1.var oAjax=new XmlHttpRequest()//创建一个ajax对象,兼容非ie6 var oAjax=new ActiveXObject('Microsoft.XMLHTTP') ...

  6. mysql去除重复记录案例

    例1,表中有主键(可唯一标识的字段),且该字段为数字类型 1 测试数据 /* 表结构 */ DROP TABLE IF EXISTS `t1`; CREATE TABLE IF NOT EXISTS ...

  7. [PY3]——内置数据结构(1)——列表及其常用操作

    列表及其常用操作_xmind图         about列表 列表是一个序列,用于顺序存储数据 列表分为两种:ArrayList(用数组实现).LinkedList(用链表实现) 定义与初始化 #l ...

  8. maven 错误:读取 xxx.jar 时出错;invalid LOC header (bad signature) 1 错误

    reqHeader:{Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8, Upgrade-Insecure- ...

  9. vmware8~12最新版本 克隆Centos6.X 系列虚拟机网卡无法启动问题 (三步即可)

    1.因工作或者学习需要,都需要在VM上克隆一台服务器,此时无论是快捷克隆(相当于快照的机体)或者完整克隆,都会碰到IP问题. 如:创建后症状:启动之后使用ifconfig,发现无ip地址,只有回环地址 ...

  10. [C语言] 数据结构-预备知识结构体

    结构体 为什么出现结构体 为了表示一些复杂的数据,而普通的基本类型变量无法满足需求  什么叫结构体 结构体是用户根据实际需要自己定义的复合数据类型 如何使用结构体 1.两种方式 一般使用结构体指针的形 ...