python中的集合

集合定义:一个无序的去重的数据集,主要特性就是去重和关系测试,关系测试不改变集合中的数据值

定义集合:set(list) 可以将list转化为集合set

示例:

定义一个集合:list_1

list_1=[1,3,23,53,3]

定义另一个集合:list_2

list_2=[2,3,53,2]

转化为集合:

可以用list_1自身转化,也可以赋值给其他变量,这里就用自身

list_1 = set(list_1)
list_2 = set(list_2)

输出一下转化后的值,可以看到已经去重了(去重特性):

print(list_1,type(list_1))
print(list_2,type(list_2))
#结果:
>>> print(list_1,type(list_1))
{1, 3, 53, 23} <class 'set'> >>> print(list_2,type(list_2))
{2, 3, 53} <class 'set'>

接下来是关系测试:

交集(list_1、list_2都有的数据):可以用set的intersection方法(以下代码)或者运算符 print(list_1 & list_2)

#交集
print(list_1.intersection(list_2))
>>>{3, 53}

判断 没有交集(没有:True、有:False):

#判断 没有交集
print("判断 没有交集,没有返回True")
print(list_1.isdisjoint(list_2)) #有交集,返回false
list_4=set([101,102]) #定义list_4与list_1没有交集
print("list_4:",list_4)
print(list_1.isdisjoint(list_4)) >>>判断 没有交集,没有返回True
>>>False
>>>list_4: {101, 102}
>>>True

并集(list_1、list_2中的数据整合在一起):可以用set的union方法,也可以使用运算符print( list_1 | list_2 )

 #并集
print(list_1.union(list_2))
>>>{1, 2, 3, 53, 23}

差集(取数据为:首先在list_1中,list_2中的数据,如果list_1中有,结果集就去掉):可以用set的difference方法,也可以使用运算符print( list_1 - list_2 ) 表示:list_1中包含,list_2不包含

#差集
print(list_1.difference(list_2))
>>>{1, 23}
#反过来也是一样的原理,结果以list_2为准
print(list_2.difference(list_1))
>>>{2}

对称差集(取得两个集合互相都没有的数据):可以使用set对象的symmetric_difference方法,也可以使用运算符 print( list_1 ^ list_2)

#对称差集:取得两个集合中,互相都没有的数据
print("对称差集")
#list_1、list_2
print(list_1,list_2)
#取得对称差集
print(list_1.symmetric_difference(list_2)) >>>{1, 3, 53, 23} {2, 3, 53}
>>>{1, 2, 23}

子集/父集:

#子集/父集 返回值为True、False
print("子集/父集")
print(list_1.issubset(list_2)) #list_1是不是list_2的子集
print(list_1.issuperset(list_2)) #list_1是不是list_2的父集
>>>False
>>>False list_3=set([3,53])
print(list_3.issubset(list_1))#list_3是不是list_1的子集
print(list_1.issuperset(list_3))#list_1是不是list_3的父集
>>>True
>>>True

集合的增伤改查:

#集合的增删改查
print("增加,add方法增加一个,update方法增加多个")
list_1.add(55555)
list_1.update([333,444,666])
print("查询,len()方法查询有多少成员,x in set判断x是否为成员")
print(list_1)
print(len(list_1))
print(666 in list_1,999 in list_1)
print("删除,set的pop方法随机删除一个,返回被删除的值。"
"remove删除指定一个成员,有就删除,没有就异常,"
"discard方法删除指定值,不返回,有就删除,没有就啥都不做")
print("it is {list}".format(list=list_1))
print(list_1.pop())
print("pop():",list_1)
#remove
list_1.remove(333)
#list_1.remove("ddd") ddd不存在,此处会异常
print("remove()",list_1)
#discard
list_1.discard(444)
list_1.discard("ddd")
print(list_1)

最新文章

  1. 在 SharePoint Server 2016 本地环境中设置 OneDrive for Business
  2. 提交数据url太长导致提交失败
  3. 大数的除法 不使用BigInteger Java实现
  4. 浅谈 facebook .net sdk 应用
  5. 数据处理/OLAP/OLTP
  6. c++基础 使用智能指针
  7. HttpServletrequest 与HttpServletResponse总结
  8. cURL: PHP并发处理方式
  9. ASP.NET MVC 阻止当前请求的视图页面缓存OutputCache
  10. C# 实现 Hyper-V 虚拟机 管理
  11. 简单数论之整除&amp;质因数分解&amp;唯一分解定理
  12. plsql连接数据库出现乱码
  13. css格式
  14. 写好的Java代码在命令窗口运行——总结
  15. 第2章 细说Linux系统用户/组管理(1)
  16. 大数据小白系列——HDFS(2)
  17. iOS 调试大法
  18. Cordova - 彻底搞定IOS编译!
  19. Spring Boot 2.0(三):使用 Docker 部署 Spring Boot
  20. java基础知识-逻辑运算符

热门文章

  1. 【Codevs 2115】数集分割
  2. POJ2127 Greatest Common Increasing Subsequence
  3. Ural 1382 2SAT
  4. [置顶][终极精简版][图解]Nginx搭建flv mp4流媒体服务器
  5. 正则表达式:(?=a)是什么意思?
  6. P4110 [HEOI2015]小L的白日梦
  7. 【题解】自行车比赛 [AHOI2016] [P2777]
  8. Bryce1010 Acm模板
  9. 构造 Codeforces Round #275 (Div. 2) C. Diverse Permutation
  10. Hibernate 一对多查询对set的排序