【python之路11】集合数据类型(set)
集合数据类型(set):集合是不重复的无需序列
1、集合数据类型的创建
a = {11,22,33}
#或
a = set() #创建空集合,不能用a={},这样创建的是字典类型
2、集合转换(将可迭代的转换为集合)
li = [11,22,33,11]
se = set(li)
print(se) #返回{33, 11, 22}
3、set方法总结se1 = {11,22}se2 = {22,33,44}se3 = {22,33}
se1.add(33) #se1返回{33, 11, 22},增加元素
se1.clear() #se1返回set(),清空所有元素
se_new = se1.copy() #新集合se_new 返回{11, 22},浅拷贝 se_new = se1.difference(se2) #返回新集合,se1中存在但se2中不存在的元素
se1.difference_update(se2) #se1更新为se1中存在且se2中不存在的元素,se1={11} se_new = se1.symmetric_difference(se2) #对称不同,实际返回两个集合并集去掉两个集合中交集元素,se_new={33, 11, 44},
实际上是se1中有se2中没有 并集于 se2中有se1中没有的
se1.symmetric_difference_update(se2) #更新对称不同,se1更新为两个集合并集去掉两个集合中交集元素,se1={33, 11, 44},
实际上是se1中有se2中没有 并集于 se2中有se1中没有的
se_new = se1.intersection(se2) #返回一个新的集合,se_new为两个集合的交集,{22}
se1.intersection_update(se2) #更新se1为se1和se2的交集,se1={22}
se_new = se1.union(se2) #返回新集合,se1与se2的并集
se1.update(se2) #se1更新为,se1与se3的并集,se1={33, 11, 44, 22}
se1.discard(11) #se1={22},抛弃一个元素,如果参数中的元素不存在,不报错
element = se1.pop() #删除任意一个元素,并将删除的元素赋值为element,element=11,se1={22},若果是空集合则抛KeyError异常
se1.remove(11) #从se1中移除11元素,se1 = {22},如果参数在set中不存在这个元素则抛出KeyError异常
bol = se1.isdisjoint(se1) #判断se1与se2是否没有交集,如果没有返回True,如果有返回False,bol=False
bol = se3.issubset(se2) #判断se3是否是子集合,se3的元素完全包含在se2内,则返回True
bol = se2.issuperset(se3) #判断se2是否是父集合,se2的元素完全包含se3,则返回True
4、set方法详细代码
class set(object):
"""
set() -> new empty set object
set(iterable) -> new set object Build an unordered collection of unique elements.
"""
def add(self, *args, **kwargs): # real signature unknown
"""
Add an element to a set. This has no effect if the element is already present.
添加一个元素到集合
这没有影响如果元素已经存在
"""
pass def clear(self, *args, **kwargs): # real signature unknown
""" Remove all elements from this set.
从这个集合中移除所有元素"""
pass def copy(self, *args, **kwargs): # real signature unknown
""" Return a shallow copy of a set.
返回一个浅拷贝的集合"""
pass def difference(self, *args, **kwargs): # real signature unknown
"""
Return the difference of two or more sets as a new set. (i.e. all elements that are in this set but not the others.)
作为一个新的集合返回两个或多个集合的不同
(也就是所有元素在这个集合中,但不在另一个集合中)
"""
pass def difference_update(self, *args, **kwargs): # real signature unknown
""" Remove all elements of another set from this set.
从这个集合中删除另一个集合的所有元素"""
pass def discard(self, *args, **kwargs): # real signature unknown
"""
Remove an element from a set if it is a member. If the element is not a member, do nothing.
从一个集合中移除一个元素,如果它是个成员
如果这个元素不是一个成员,什么也不做
"""
pass def intersection(self, *args, **kwargs): # real signature unknown
"""
Return the intersection of two sets as a new set. (i.e. all elements that are in both sets.)
作为一个新的集合返回两个集合的交集
(也就是,所有在两个结合中都有对的元素)
"""
pass def intersection_update(self, *args, **kwargs): # real signature unknown
""" Update a set with the intersection of itself and another.
更新一个集合用自己和另一个集合的交集"""
pass def isdisjoint(self, *args, **kwargs): # real signature unknown
""" Return True if two sets have a null intersection.
返回True 如果两个集合没有交集"""
pass def issubset(self, *args, **kwargs): # real signature unknown
""" Report whether another set contains this set.
报告是否另一个集合包含这个集合
"""
pass def issuperset(self, *args, **kwargs): # real signature unknown
""" Report whether this set contains another set.
报告是否这个集合包含另一个集合"""
pass def pop(self, *args, **kwargs): # real signature unknown
"""
Remove and return an arbitrary set element.
Raises KeyError if the set is empty.
移除并返回任意集合元素
抛出KeyError 如果集合是空的
"""
pass def remove(self, *args, **kwargs): # real signature unknown
"""
Remove an element from a set; it must be a member. If the element is not a member, raise a KeyError.
从集合中移除一个元素;它必须是一个成员。
如果这个元素不是一个成员,抛出KeyError异常
"""
pass def symmetric_difference(self, *args, **kwargs): # real signature unknown
"""
Return the symmetric difference of two sets as a new set. (i.e. all elements that are in exactly one of the sets.)
作为一个新的集合返回两个集合的对称不同
(也就是所有元素正好在众集合中的一个)
实际上是a集合存在且b集合中不存在的元素,并集于,b集合存在且a集合不存在的元素
"""
pass def symmetric_difference_update(self, *args, **kwargs): # real signature unknown
""" Update a set with the symmetric difference of itself and another.
更新一个集合用自己和另一个集合的不同
""" pass def union(self, *args, **kwargs): # real signature unknown
"""
Return the union of sets as a new set. (i.e. all elements that are in either set.)
作为一个新的集合返回集合的并集。
也就是在这两个集合中的所有元素)
"""
pass def update(self, *args, **kwargs): # real signature unknown
""" Update a set with the union of itself and others.
更新一个集合用自己和另一个集合的并集"""
pass def __and__(self, *args, **kwargs): # real signature unknown
""" Return self&value. """
pass def __contains__(self, y): # real signature unknown; restored from __doc__
""" x.__contains__(y) <==> y in x. """
pass def __eq__(self, *args, **kwargs): # real signature unknown
""" Return self==value. """
pass def __getattribute__(self, *args, **kwargs): # real signature unknown
""" Return getattr(self, name). """
pass def __ge__(self, *args, **kwargs): # real signature unknown
""" Return self>=value. """
pass def __gt__(self, *args, **kwargs): # real signature unknown
""" Return self>value. """
pass def __iand__(self, *args, **kwargs): # real signature unknown
""" Return self&=value. """
pass def __init__(self, seq=()): # known special case of set.__init__
"""
set() -> new empty set object
set(iterable) -> new set object Build an unordered collection of unique elements.
# (copied from class doc)
"""
pass def __ior__(self, *args, **kwargs): # real signature unknown
""" Return self|=value. """
pass def __isub__(self, *args, **kwargs): # real signature unknown
""" Return self-=value. """
pass def __iter__(self, *args, **kwargs): # real signature unknown
""" Implement iter(self). """
pass def __ixor__(self, *args, **kwargs): # real signature unknown
""" Return self^=value. """
pass def __len__(self, *args, **kwargs): # real signature unknown
""" Return len(self). """
pass def __le__(self, *args, **kwargs): # real signature unknown
""" Return self<=value. """
pass def __lt__(self, *args, **kwargs): # real signature unknown
""" Return self<value. """
pass @staticmethod # known case of __new__
def __new__(*args, **kwargs): # real signature unknown
""" Create and return a new object. See help(type) for accurate signature. """
pass def __ne__(self, *args, **kwargs): # real signature unknown
""" Return self!=value. """
pass def __or__(self, *args, **kwargs): # real signature unknown
""" Return self|value. """
pass def __rand__(self, *args, **kwargs): # real signature unknown
""" Return value&self. """
pass def __reduce__(self, *args, **kwargs): # real signature unknown
""" Return state information for pickling. """
pass def __repr__(self, *args, **kwargs): # real signature unknown
""" Return repr(self). """
pass def __ror__(self, *args, **kwargs): # real signature unknown
""" Return value|self. """
pass def __rsub__(self, *args, **kwargs): # real signature unknown
""" Return value-self. """
pass def __rxor__(self, *args, **kwargs): # real signature unknown
""" Return value^self. """
pass def __sizeof__(self): # real signature unknown; restored from __doc__
""" S.__sizeof__() -> size of S in memory, in bytes """
pass def __sub__(self, *args, **kwargs): # real signature unknown
""" Return self-value. """
pass def __xor__(self, *args, **kwargs): # real signature unknown
""" Return self^value. """
pass __hash__ = None
5、实例需求
old_dic = {"#1":11,"#2":22,"#3":33}
new_dic = {"#3":44,"#4":55,"#5":66}
需求:
1、old_dic与new_dic如果字典key值相同,则new的值更新到old里面
2、new里面存在old里面不存在,则在old里面添加
3、old中存在new中不存在则在old中删除
old_dic = {"#1":11,"#2":22,"#3":33}
new_dic = {"#3":44,"#4":55,"#5":66} old_set = set(old_dic.keys()) #key值转换为集合
new_set = set(new_dic.keys())
set_inter = old_set.intersection(new_set) #old与new交集
for i in set_inter: #更新old列表
old_dic[i] = new_dic[i]
set_new_dife = new_set.difference(old_set) #new里面存在,old里面不存在的集合
for i in set_new_dife:
old_dic[i] = new_dic[i]
set_old_dife = old_set.difference(new_set) #old里面存在,new里面不存在的集合
for i in set_old_dife:
old_dic.pop(i)
print(old_dic)
【python之路11】集合数据类型(set)的更多相关文章
- Python之路 day2 集合的基本操作
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa ''' #集合是无序的 集合的关系测试, 增加,删除,查找等操作 ''' #列表去重 ...
- Python入门笔记(11):集合
一.目录 1.集合概述 2.关于集合的操作符.关系符号 3.集合的一系列操作(添加.更新.访问.删除) 4.关于集合的内建函数.内建方法 5.小结 二.集合概述 集合(set):把不同的元素组成一起形 ...
- 小白的python之路11/14
视频69 固定命令的方式 1 vim /etc/profile 2 vim /etc/bashrc 3 vim /root/.bashrc 4 vim /root/.bash_profile 5 cd ...
- python之路——11
王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 学习内容 一.装饰器 1.时间模块 time.time time.sleep 2.装饰器 原则---开放封闭 ...
- python之路---11 第一类对象 函数名 闭包 迭代器
二十九. 1.函数名的运用 ①函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 ②函数名是一个内存地址 ③ 函数名可以赋值给其他变量 ④函数名可以当 ...
- Python之路-字符编码&数据类型补充
作业 三级菜单程序 menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{ }, '网易':{ }, 'google':{ } }, '中关村':{ '爱奇艺':{}, '汽车 ...
- 小白的python之路11/15 awk 77-78
awk -F指定分隔符 eg下图指定 : 为分隔符,$1 $4 NF表示以分隔符为表准,该行分了几段 $NF表示取最后一段 正则表达式 表示打印第一个开头的用户名awk -F: '/nolog ...
- 小白的python之路11/3内存 进程 二进制软件包 rpm yum
一 分区 查看swap分区 swapon -s mkswap /dev/sdb8 激活 swapon -a /dev/sdb8 swapon -s (sdb8进入了文件中) 提供内存服务 free ( ...
- 小白的python之路11/3总结
ln-s 指定源是谁 l是软连接,其中源文件相当于快捷方式 1.打包 归档命令 tar -cvzf test.tar a.txt b.txt c.txt其中c是创建,v是详细信息,f是打包后文件名,a ...
随机推荐
- AndroidStudio使用注意事项
今天在引入GitHUb上的开源框架时,写好依赖后编译时,报以下错误: Error:Execution failed for task ':app:processDebugResources'.> ...
- Ubuntu vim显示行号语法高亮自动缩进
配置文件名为Ubuntu vimrc在Fedora中vim的配置文件存放在/etc目录中,配置文件名为Ubuntu vimrc在终端 输入以下命令来编辑Ubuntu vimrc配置文件:sudo vi ...
- iis7支持asp(访问页面,页面存在仍然提示404)
1. win7下安装IIS时ASP一般被默认不选中的状态,因此需要打开IIS检查功能视图栏中是否存在ASP选项,若没有则需要从控制面板->程序和 功能->打开或关闭Windows功能-&g ...
- CALayer & UIView 关系浅析
原文链接:http://www.jianshu.com/p/8e6a313c158e 一.CALayer和UIView的关系 UIView显示在屏幕上归功于CALayer 可以说:UIView依赖CA ...
- DDS视图&Button控件
<Button android:id="@+id/btn1" android:layout_width="wrap_content" //包裹文字 ...
- BZOJ 3110:[Zjoi2013]K大数查询(整体二分)
http://www.lydsy.com/JudgeOnline/problem.php?id=3110 题意:-- 思路:其实和之前POJ那道题差不多,只不过是换成区间更新,而且是第k大不是第k小, ...
- Mysql 中文乱码问题完美解决方案
MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如 ...
- PS2键盘 + LCD12864 实验
本实验是通过LCD12864来显示键盘上被按下的按键,实验比较简单,在LCD12864固定的DDRAM地址上显示,缺点就是不能保存上一次被按的内容,后者会覆盖掉前面,所以屏上仅有一个字符显示.保存上一 ...
- LCD12864 液晶显示-汉字及自定义显示(串口)
在网上找了许久,发现FPGA用串口驱动LCD12864程序很少,基本上没有.刚开始窃喜,中间郁闷,最后还是高兴,为什么这样说呢!头一回在没有参考程序的情况下,完全是照时序图写(自信),中间调试过程遇到 ...
- tinkphp5.0 traits 的引入
Traits引入 ThinkPHP 5.0开始采用trait功能(PHP5.4+)来作为一种扩展机制,可以方便的实现一个类库的多继承问题. trait是一种为类似 PHP 的单继承语言而准备的代码复用 ...