集合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. @SafeVarargs注解

    被@SafeVarargs注解标注的方法必须是由static或者final修饰的方法. 使用泛型的变长参数方法产生编译器警告的示例: public static <T> T useVara ...

  2. KNN理解

    基本思想 K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实例分类到这个类中.如下面的图: 通俗一点来说,就是找最 ...

  3. InnoDB的视图

    视图(View)是一个命名的虚表,它由一个查询来定义,可以当做表使用.与持久表(permanent table)不同的是,视图中的数据没有物理表现形式. 视图的作用 视图在数据库中发挥着重要的作用.视 ...

  4. SQL常用性能相关脚本

    --调试语句性能前记得清空执行计划 每次执行需优化SQL前,带上清除缓存的设置SQL. 平常在进行SQL Server性能优化时,为了确保真实还原性能问题,我们需要关闭SQL Server自身的执行计 ...

  5. linux编程之GDB调试

    GDB是一套字符界面的程序集,可以用它在linux上调试C和C++程序,它提供了以下的功能: 1 在程序中设置断点,当程序运行到断点处暂停 2 显示变量的值,可以打印或者监视某个变量,将某个变量的值显 ...

  6. (三)JNI常用示例

    针对我之前文章的练习:JNI方法总结 1. 字符串 JAVA层: test.testString("HELLOWORLD"); JNI层: JNIEXPORT jstring JN ...

  7. HandlerInterceptor与MethodInterceptor

    HandlerInterceptor是springMVC项目中的拦截器,它拦截的目标是请求的地址,比MethodInterceptor先执行.实现一个HandlerInterceptor拦截器可以直接 ...

  8. [编程] C语言结构体指针作为函数参数

    结构体指针作为函数参数:结构体变量名代表的是整个集合本身,作为函数参数时传递的整个集合,也就是所有成员,而不是像数组一样被编译器转换成一个指针.如果结构体成员较多,尤其是成员为数组时,传送的时间和空间 ...

  9. fieldset、legend、display html元素

    fieldset 定义和用法 fieldset 元素可将表单内的相关元素分组. <fieldset> 标签将表单内容的一部分打包,生成一组相关表单的字段. 当一组表单元素放到 <fi ...

  10. HDU 3306 Another kind of Fibonacci ---构造矩阵***

    Another kind of Fibonacci Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...