集合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. Linux 命令学习之cd

    功能说明: cd 命令是 linux 最基本的命令语句,其他的命令都会依赖与 cd 命令.因此学好 cd 命令是必须的. 语 法:cd [目的目录] 补充说明:cd指令可让用户在不同的目录间切换,需要 ...

  2. python中的生成器(一)

    我们先考虑一个场景: 有个情景需要循环输出1——10. 这里给两种方法: list1 = [1,2,3,4,5,6,7,8,9,10] for i in list1: print(i) for i i ...

  3. linux 将一个服务器上的文件或者文件夹复制到另一台服务器上

    使用scp将一个Linux系统中的文件或文件夹复制到另一台Linux服务器上 复制文件或文件夹(目录)命令:  一.复制文件:  (1)将本地文件拷贝到远程  scp 文件名 用户名@计算机IP或者计 ...

  4. PHP之mb_strpos使用

    mb_strpos (PHP 4 >= 4.0.6, PHP 5, PHP 7) mb_strpos - Find position of first occurrence of string ...

  5. c++ 沉思录---代理类

    一.问题 如何设计一容器能包含彼此不同而又相互关联的类的对象(处于完整的继承层次的类)?因为一般的数组容器都只能包含一种类型的对象. 假设有一个表示不同类型的交通工具的类的派生层次: class Ve ...

  6. spring mongo data api learn

    1 索引 1.1 单列索引 @Indexed @Field(value = "delete_flag") private Boolean deleteFlag = false; @ ...

  7. FocusBI: SSIS 开发案例(原创)

    关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...

  8. (二)JNI方法总结

    整个网上就没看到一个关于JNI好点的文档,干脆自己写一份,以方便以后使用的时候查阅 1. 类操作 DefineClass jclass DefineClass(JNIEnv *env, jobject ...

  9. Node.js创建第一个应用

    在我们创建 Node.js 第一个 "Hello, World!" 应用前,让我们先了解下 Node.js 应用是由哪几部分组成的: 引入 required 模块:我们可以使用 r ...

  10. 如何快速备份还原Sql Server 数据库

    备份数据库 选择你要备份的数据库,鼠标右键单击,选择任务-备份 弹出备份数据库窗口,选择添加 弹出选择备份目标窗口,点击浏览,选择存放备份数据库的目录,输入文件名,后缀名输入.bak,点击确定,确定, ...