190321集合

一、集合

  1. 由不同元素组成(去重的特性)
  2. 是无序的
  3. 集合中只能存放不可变类型的元素(数字、字符串、元组)
  4. 集合可增加、删除,但是不能修改

1、集合的定义

  • 使用大括号定义
se = {1,2,3,4,5,"dongfei"}
print(se,type(se))  #{1, 2, 3, 4, 5, 'dongfei'} <class 'set'>
  • 使用set定义
se = set("dongfei")
print(se,type(se))  #{'i', 'e', 'g', 'n', 'o', 'd', 'f'} <class 'set'>

se2 = set(["hello","hello","world"])
print(se2)  #{'world', 'hello'}

2、集合的内置方法

  • add() 添加一个元素
se3 = {1,2,3,4,5,"dongfei"}
se3.add("hello")
print(se3)  #{1, 2, 3, 4, 5, 'hello', 'dongfei'}
  • clear() 清空
  • copy() 浅拷贝
  • pop() 随机删除一个元素
  • remove() 指定删除一个元素,删除的元素不存在会报错
se4 = {1,2,3,4,5,"dongfei"}
se4.remove("dongfei")
print(se4)  #{1, 2, 3, 4, 5}
  • discard() 指定删除一个元素,删除的元素不存在不会报错
se5 = {1,2,3,4,5,"dongfei"}
se5.discard("nono")
print(se5)  #{1, 2, 3, 4, 5, 'dongfei'}
  • isdisjoint() 判断两个集合是否有交集,没有交集返回True
se5 = {"aa", "bb", "cc"}
se6 = {"dd", "ee"}
print(se5.isdisjoint(se6))  #True
  • issubset() 判断是否是另一个集合的子集
  • issuperset() 判断是否另一个集合的父集
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "bb"}
print(se6.issubset(se5))  #True
print(se5.issuperset(se6))  #Ture
  • update() 更新多个元素,接受可迭代的对象
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "bb", "dd", "ee"}
se5.update(se6)
print(se5)  #{'bb', 'aa', 'cc', 'ee', 'dd'}

3、集合关系运算(交、差、并、补)

  • 交集
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "dd", "ee"}
print(se5.intersection(se6))  #交集
print(se5&se6)  #{'cc'}
  • 并集
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "dd", "ee"}
print(se5.union(se6))  #并集
print(se5|se6)  #{'aa', 'ee', 'dd', 'cc', 'bb'}
  • 差集
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "dd", "ee"}
print(se5.difference(se6))  #差集
print(se5-se6)  #{'aa', 'bb'}
print(se6.difference(se5))  #差集
print(se6-se5)  #{'ee', 'dd'}
  • 交叉补集(并集-交集)
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "dd", "ee"}
print(se5.symmetric_difference(se6))  #交叉补集
print(se5^se6)  #{'bb', 'aa', 'dd', 'ee'}
  • xxx_update 求完集合运算后更新集合
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "dd", "ee"}
se5.intersection_update(se6)  #相当于se5 = se5&se6
print(se5)  #{'cc'}
print(se6)  #{'ee', 'cc', 'dd'}

4、不可变集合的定义

se = frozenset("hello")
print(se)  #frozenset({'h', 'e', 'o', 'l'})
posted @ 2019-03-22 22:33  生生不息.连绵不绝  阅读(148)  评论(0编辑  收藏  举报