python基本数据类型——set
一、集合的定义
set集合,是一个无序且不重复的元素集合。
集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。
二、集合的创建
s = set() s = {11,22,33,44} *注:创建空集合时,只能用set(),如果用第二种方法s={},创建的实际上是一个空字典。 s = {} print(type(s)) <class 'dict'>a=set('boy') b=set(['y', 'b', 'o','o']) c=set({"k1":'v1','k2':'v2'}) d={'k1','k2','k2'} e={('k1', 'k2','k2')} print(a,type(a)) print(b,type(b)) print(c,type(c)) print(d,type(d)) print(e,type(e)) 执行结果如下: {'o', 'b', 'y'} <class 'set'> {'o', 'b', 'y'} <class 'set'> {'k1', 'k2'} <class 'set'> {'k1', 'k2'} <class 'set'> {('k1', 'k2', 'k2')} <class 'set'>
三、集合的功能
1 class set(object): 2 """ 3 set() -> new empty set object 4 set(iterable) -> new set object 5 6 Build an unordered collection of unique elements. 7 """ 8 def add(self, *args, **kwargs): # real signature unknown 9 """ 10 Add an element to a set,添加元素 11 12 This has no effect if the element is already present. 13 """ 14 pass 15 16 def clear(self, *args, **kwargs): # real signature unknown 17 """ Remove all elements from this set. 清楚内容""" 18 pass 19 20 def copy(self, *args, **kwargs): # real signature unknown 21 """ Return a shallow copy of a set. 浅拷贝 """ 22 pass 23 24 def difference(self, *args, **kwargs): # real signature unknown 25 """ 26 Return the difference of two or more sets as a new set. A中存在,B中不存在 27 28 (i.e. all elements that are in this set but not the others.) 29 """ 30 pass 31 32 def difference_update(self, *args, **kwargs): # real signature unknown 33 """ Remove all elements of another set from this set. 从当前集合中删除和B中相同的元素""" 34 pass 35 36 def discard(self, *args, **kwargs): # real signature unknown 37 """ 38 Remove an element from a set if it is a member. 39 40 If the element is not a member, do nothing. 移除指定元素,不存在不保错 41 """ 42 pass 43 44 def intersection(self, *args, **kwargs): # real signature unknown 45 """ 46 Return the intersection of two sets as a new set. 交集 47 48 (i.e. all elements that are in both sets.) 49 """ 50 pass 51 52 def intersection_update(self, *args, **kwargs): # real signature unknown 53 """ Update a set with the intersection of itself and another. 取交集并更更新到A中 """ 54 pass 55 56 def isdisjoint(self, *args, **kwargs): # real signature unknown 57 """ Return True if two sets have a null intersection. 如果没有交集,返回True,否则返回False""" 58 pass 59 60 def issubset(self, *args, **kwargs): # real signature unknown 61 """ Report whether another set contains this set. 是否是子序列""" 62 pass 63 64 def issuperset(self, *args, **kwargs): # real signature unknown 65 """ Report whether this set contains another set. 是否是父序列""" 66 pass 67 68 def pop(self, *args, **kwargs): # real signature unknown 69 """ 70 Remove and return an arbitrary set element. 71 Raises KeyError if the set is empty. 移除元素 72 """ 73 pass 74 75 def remove(self, *args, **kwargs): # real signature unknown 76 """ 77 Remove an element from a set; it must be a member. 78 79 If the element is not a member, raise a KeyError. 移除指定元素,不存在保错 80 """ 81 pass 82 83 def symmetric_difference(self, *args, **kwargs): # real signature unknown 84 """ 85 Return the symmetric difference of two sets as a new set. 对称交集 86 87 (i.e. all elements that are in exactly one of the sets.) 88 """ 89 pass 90 91 def symmetric_difference_update(self, *args, **kwargs): # real signature unknown 92 """ Update a set with the symmetric difference of itself and another. 对称交集,并更新到a中 """ 93 pass 94 95 def union(self, *args, **kwargs): # real signature unknown 96 """ 97 Return the union of sets as a new set. 并集 98 99 (i.e. all elements that are in either set.) 100 """ 101 pass 102 103 def update(self, *args, **kwargs): # real signature unknown 104 """ Update a set with the union of itself and others. 更新 """ 105 pass 106 107 源码
源码
基本功能:
- 增加(add, update)
a=set('python') a.add('tina') print(a) b=set('python') b.update('tina') print(b) 执行结果如下: {'tina', 'o', 'p', 'n', 't', 'y', 'h'} {'o', 'i', 'p', 'a', 'n', 't', 'y', 'h'} ################## 由以上代码可以看出,add是单个元素的添加,而update是批量的添加。输出结果是无序的,并非添加到尾部。
- 删除(remove,discard,pop)
c={'p', 'i', 'h', 'n', 'o', 'y', 't'} c.remove('p') print(c)c={'p', 'i', 'h', 'n', 'o', 'y', 't'} c.discard('p') print(c) c={'p', 'i', 'h', 'n', 'o', 'y', 't'} c.pop() print(c) 执行结果如下: {'i', 'h', 't', 'o', 'y', 'n'} ##### 当执行c.remove('p','i')和c.discard('p','i')时,报错:TypeError: remove() takes exactly one argument (2 given),说明remove和discard删除元素时都只能一个一个的删,同add对应。 ################################################################################# remove,pop和discard的区别: discard删除指定元素,当指定元素不存在时,不报错; remove删除指定元素,但当指定元素不存在时,报错:KeyError。 pop删除任意元素,并可将移除的元素赋值给一个变量,不能指定元素移除。
set的特有功能:
s1 = {0} s2 = {i % 2 for i in range(10)} s = set('hi') t = set(['h', 'e', 'l', 'l', 'o']) print(s.intersection(t), s & t) # 交集 print(s.union(t), s | t) # 并集 print(s.difference(t), s - t) # 差集 print(s.symmetric_difference(t), s ^ t) # 对称差集 print(s1.issubset(s2), s1 <= s2) # 子集(被包含) print(s1.issuperset(s2), s1 >= s2) # 父集(包含) 执行结果如下: {'h'} {'h'} {'i', 'e', 'h', 'l', 'o'} {'i', 'e', 'h', 'l', 'o'} {'i'} {'i'} {'e', 'l', 'o', 'i'} {'e', 'l', 'o', 'i'} True True False Falses = {11,22,33} t = {22,44} print(s.isdisjoint(t))#(disjoint脱节的,)即如果没有交集,返回True,否则返回False s.difference_update(t)#将差集覆盖到源集合,即从当前集合中删除和B中相同的元素 print(s) 执行结果如下: False {33, 11}s = {11,22,33} t = {22,44} s.intersection_update(t)#将交集覆盖到源集合 print(s) 执行结果如下: {22}s = {11,22,33} t = {22,44} s.symmetric_difference_update(t)#将对称差集覆盖到源集合 print(s) 执行结果如下: {33, 11, 44}
四、练习题
寻找差异:哪些需要删除?哪些需要新建?哪些需要更新?
#!/usr/bin/python # -*- coding:utf-8 -*- old_dict = {"#1": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80},"#2": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80},"#3": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80}, }new_dict = {"#1": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 800},"#3": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80},"#4": {'hostname': 'c2', 'cpu_count': 2, 'mem_capicity': 80}, } new_set = set() old_set = set() for i in new_dict:new_set.add(i) for j in old_dict:old_set.add(j) new_add = new_set.difference(old_set) #new_dict中有,old_dict中沒有 old_del = old_set.difference(new_set) #old_dict中有,new_dict中沒有 update = new_set.intersection(old_set) #old_dict和new_dict共同有的,需要把new_dict更新到old_dict中for k in new_add:old_dict[k] = new_dict[k] #將new_dict中新增的內容添加到old_dict中 for v in old_del:del old_dict[v] #將old_dict中失效的內容刪除 for m in update:old_dict[m] = new_dict[m] #把new_dict更新到old_dict中print(old_dict)
转载于:https://www.cnblogs.com/LiCheng-/p/6430708.html
python基本数据类型——set相关推荐
- Python的零基础超详细讲解(第四天)-Python的数据类型
Python 基本数据类型 Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型&q ...
- python的数据类型和变量
python的数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种 ...
- python核心数据类型_Python核心数据类型-列表
Python核心数据类型-列表 关于列表的重要属性 列表是任意对象的有序集合,列表中可以包含任何种类的对象,数字 字符串 或者是其他列表 列表可以通过偏移来读取其中的元素,也可以通过分片读取列表中的某 ...
- python判断数据类型type_Python 判断数据类型有type和isinstance
Python 判断数据类型有type和isinstance 基本区别在于: type():不会认为子类是父类 isinstance():会认为子类是父类类型 执行结果如下: 用isinstance判断 ...
- Python基础数据类型之set集合
Python基础数据类型之set集合 一.set数据类型介绍 二.set集合演示 三.set集合中hash介绍 1.哈希定义 2.数据类型的hash和不可hash 3.set中hash示例 四.set ...
- Python基础数据类型之字符串(二)
Python基础数据类型之字符串(二) 一.字符串的常规操作 二.字符串的大小写转换 1.首字母大写 2. 每个单词首字母大写 3.大写转化为小写 4.所有字母变成大写字母 二.验证码忽略大小写 三. ...
- Python基础数据类型之字符串(一)
Python基础数据类型之字符串(一) 一.字符串格式化 1.字符串占位符 2.字符串格式化操作 二.f-string格式化 三.字符串的索引 四.字符串的切片 1.常规切片使用方法 3.步长的介绍 ...
- 好好学python·基本数据类型
好好学Python的第一天 基本用法 注释 输出 变量 命名规范 变量的定义方式 python的数据类型 数据类型分类 字符串类型 数字类型 List列表类型 tuple 元组类型的定义 Dict字典 ...
- python元组类型_什么是python元组数据类型
什么是python元组数据类型 发布时间:2020-08-25 11:46:29 来源:亿速云 阅读:68 这篇文章运用简单易懂的例子给大家介绍什么是python元组数据类型,代码非常详细,感兴趣的小 ...
- python核心数据类型_Python核心数据类型—元组
Python核心数据类型-元组 Python元组与列表类似,但是元组属于不可变类型 创建元组 a = () #创建空元组 a = (1, 2, 3) #创建一个元组 a = [1, 2, 3] b = ...
最新文章
- win10 uwp 按下等待按钮
- 递归,记忆化搜索,(棋盘分割)
- 【智能驾驶】车道线检测中的新IPM(逆透视变换)算法实验效果
- 第一次接触AgilePoint业务流程及任务管理(BPM)
- 长沙四大名校2021年高考成绩查询,2021年长沙高考各高中成绩及本科升学率数据排名及分析...
- xgboost调参指南
- 在WORD中删除中文或英文
- Redis的安装过程步骤
- 简单介绍信用卡分销系统
- JDBC作用接口和创建的步骤详细解析
- 用Resource Hacker辅助升级相关测试
- 半空间数据空间化相关接口
- 20180925-7 规格说明书——吉林市两日游
- luogu P2184 贪婪大陆
- python搜索pdf内容所在页码_用python合并多个pdf文件并标页码
- 百思不得其姐学习笔记
- 搭建FTP服务器后访问时出现“FTP文件夹错误 无法与服务器建立连接”的解决办法
- 电脑休眠睡眠状态下无线WiFi远程网络唤醒设置
- Revit的二次开发带来的赢利点和后续故事
- 投资理财-言微不劝人
热门文章
- 第三章 网络体系结构作业
- python如何用requests传送json格式数据
- python将嵌套列表转换为字典
- 【深度学习笔记】个人阅读的Deep Learning方向的paper整理
- 字典树-大量字符串前缀及出现次数是否存在统计(Trie树-java)算法实现
- 【Python】 html解析BeautifulSoup
- anaconda打开python文本编辑器_【python】anaconda中打开IDLE(python 自带编辑器)
- shell 除法保留n位小数
- 共享锁 排他锁 是什么区别
- JavaSE——Java8之Stream流