十、补充数据类型set
set:无顺序的不重复的集合
list---允许重复,修改
tuple--允许重复,不能修改
set----不允许重复的集合
例子:
s=set()
print s l1=[11,22,33,22,11]
l2=(11,22,33,44,22)
l3='12345665'
--------------------------输出
set([])
set([33, 11, 22]) set([33, 11, 44, 22]) set(['1', '3', '2', '5', '4', '6'])
-----------------------------------------------------------------------------------------------------------
#clear清空元素
s={11,22,33}
s.clear()
print s------------------------------------------set([])
====================================
#add想集合中添加元素
s.add(44)
print s
--------------------------
set([])
set([44])
====================================
#copy浅拷贝
b=s.copy()
print b
------------------------- set([44])
====================================
#difference
se={11,22,33}
ms={22,55}
print se.difference(ms) #找se中存在的,ms中不存在的
print ms.difference(se) #找ms中存在的,se中不存在的
-------------------------
set([33, 11])
set([55])
====================================
#difference_update
se={11,22,33}
ms={22,55}
print se.difference_update(ms) #找se中存在的,ms中不存在的,并把se更新
print se,ms
se={11,22,33}
ms={22,55}
print ms.difference_update(se) #找ms中存在的,se中不存在的,并把ms更新
print se,ms
-------------------------
None
set([33, 11]) set([22, 55])
None
set([33, 11, 22]) set([55])
====================================
#discard 移除
se={11,22,33}
se.discard(11)
se.discard(66) #元素不存在不报错
#se.remove(66) #元素不存在报错
print se
-------------------------
set([33, 22])
====================================
#intersection 交集
se={11,22,33}
be={22,95,"随便"}
print se.intersection(be)
-------------------------
set([22])
====================================
#intersection_update 取交集并把自己更新成交集
se={11,22,33}
be={22,95,"随便"}
se.intersection_update(be)
print se
-------------------------
set([22])
====================================
#isdisjoint有交集是false,没有交集数true
se={11,22,33}
be={22,95,"随便"}
print se.isdisjoint(be)
-------------------------
False
====================================
#issubset,issuperset子序列,父序列
se={11,22,33}
be={22,33}
print be.issubset(se)
print se.issuperset(be)
-------------------------
True
True
====================================
#pop移除
se={11,22,33}
se.pop()
print se
-------------------------
set([11, 22])
====================================
#symmetric_difference对称交集
se={11,22,33,44}
be={11,22,55,66}
r1=se.difference(be)
r2=be.difference(se)
print (r1,r2)
ret=se.symmetric_difference(be)
print ret
-------------------------
(set([33, 44]), set([66, 55]))
set([33, 66, 44, 55])
====================================
#symmetric_difference_update对称交集,并更新se
se={11,22,33,44}
be={11,22,55,66}
se.symmetric_difference_update(be)
print se
-------------------------
set([33, 66, 44, 55])
====================================
#union并集
se={11,22,33,44}
be={11,22,55,66}
print se.union(be)
-------------------------
set([33, 66, 11, 44, 22, 55])
====================================
#update更新
se={11,22,33,44}
se.update([444,555,666])
print se
-------------------------
set([33, 555, 11, 44, 22, 666, 444])
====================================
深拷贝,浅拷贝
import copy n1=123
n2=copy.copy(n1)
print n2,id(n1),id(n2)
n3=copy.deepcopy(n1)
print n2,id(n1),id(n3) #浅拷贝,在内存中只额外创建第一层数据
#深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)
n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
n2=copy.copy(n1)
print n2,id(n1),id(n2)
-----------------------------------------------------------------------------------------------------------
十、补充数据类型set的更多相关文章
- day07补充-数据类型总结及拷贝
目录 数据类型总结 按照存一个值 OR 多个值来分 按照有序 OR 无序来分 按照可变 OR 不可变来分 拷贝 && 浅拷贝 && 深拷贝&& .cop ...
- javacsript (十) 数据类型
类型声明的时候,直接使用 var varname=xxx 数字.字符.布尔,声明都直接使用var就可以, JavaScript 数组 下面的代码创建名为 cars 的数组: var cars=new ...
- [十]基础数据类型之Unicode编码简介
编码含义 关于编码的含义,之前也说过,计算机只能存储二进制序列 所以对于字符,保存的时候,需要进行编码为二进制,进行存储 呈现的时候,需要将二进制进行解码,转换成字符的形式 有很多种编码方式,比如 ...
- 19-3-7Python中小数据池、数据类型的补充、set集合
一.小数据池(了解) “id” 获取内存地址 “==” 比较等号两端的值是否相等 “is” 身份运算:判断的是两个对象的内存地址是否相同. 代码块:一个文件就是一个代码块.(函数.类都是 ...
- python02---基础数据类型
python02---基础数据类型 一. 什么是数据类型 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,&quo ...
- Python的常用内置函数介绍
Python的常用内置函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.取绝对值(abs) #!/usr/bin/env python #_*_coding:utf-8_ ...
- Es5 - 11 详解
一.ES简介 ECMAScript,欧洲计算机制造商协会 ES是一种标准,而JS是ES的一种实现 每年的ES版本中都会引入新特性 二.NRM的安装与使用 NRM是切换源的工具 ES6 2.1安装 wi ...
- IOS开发基础知识--碎片5
二十三:addSubview和insertSubview 区别 addSubview 是将view加到所有层的最顶层 相当于将insertSubview的atIndex参数设置成view.subvie ...
- Python基础1
本节内容2016-05-30 Python介绍 发展史 Python 2 0r 3? 安装 Hello word程序 变量 用户输入 模块初识 .pyc? 数据类型初识 数据运算 if...else语 ...
随机推荐
- Python 入门之 推导式
Python 入门之 推导式 推导式就是构建比较有规律的列表,生成器,字典等一种简便的方式 1.推导式 (1)列表推导式 : <1> 普通循环: [变量 for循环] print([i f ...
- 增强 Jupyter Notebook的功能
增强 Jupyter Notebook的功能 Jupyter Notebook 是所有开发者共享工作的神器,它为共享 Notebooks 提供了一种便捷方式:结合文本.代码和图更快捷地将信息传达给受众 ...
- spring boot 枚举使用的坑2
上一篇说到在枚举当在controller的方法做参数时的坑,解决方法是配置了一个converter,后来想想,如果不闲每次都加一个注解麻烦的话,可以在参数前面加一个注解,添加一个解析器应该也可以解决这 ...
- Tomcat启动慢的原因及解决方法
Tomcat启动慢的原因及解决方法 在CentOS启动Tomcat时,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的.Tocmat的Session ID ...
- ln -在文件之间建立连接
总览 ln [options] source [dest] ln [options] source...directory POSIX 选项: [-f] GNU 选项(缩写): [-bdfinsvF] ...
- 06.Linux系统-GitLab版本控制服务安装部署
官方文档:https://about.gitlab.com/install/#centos-7 1.yum install -y curl policycoreutils-python openssh ...
- Docker下载镜像并创建容器运行
在linux系统中安装完成docker后,我们开始进行docker的镜像.容器的使用. 在使用docker时,首先要明确的两个概念:image(镜像) 与 container (容器) image: ...
- L3-002 特殊堆栈 (30 分)
大家都知道“堆栈”是一种“先进后出”的线性结构,基本操作有“入栈”(将新元素插入栈顶)和“出栈”(将栈顶元素的值返回并从堆栈中将其删除).现请你实现一种特殊的堆栈,它多了一种操作叫“查中值”,即返回堆 ...
- ZROI 19.07.28 序列数据结构/jk
写在前面 dls:"我不会数据结构,但是APIO的数据结构场我写了,还是蛮简单的." T1 CF643G Sol: 有一个\(O(n\log^2n)\)的做法:假设将区间排好序,取 ...
- Python内置函数之filter map reduce
Python内置函数之filter map reduce 2013-06-04 Posted by yeho Python内置了一些非常有趣.有用的函数,如:filter.map.reduce,都是对 ...