python基础 13. 集合

集合

  什么是集合
    python语言提供的内置数据结构
    与列表、字典一样独属于可变类型序列
    集合是没有value的字典
  集合的创建
    集合的顺序是混乱的,第一个放入的数据未必排在第一位
    集合内的单个元素不能重复,会把重复的去掉
# 集合创建
a = set()  # 集合不能用{}创建
b = {'a', 'b', 'c', 'd'}
c = set('abcdefga')
d = set(range(5))
e = set([1, 2, 3, 4, 4, 6])
print(a, type(a), id(a))  # 空集合
print(b, type(b), id(b))  # 集合的顺序是混乱的,第一个放入的数据未必排在第一位
print(c, type(c), id(c))  # 只会输出一个a,不允许重复元素,否则会去掉后续重复元素
print(d, type(d))
print(e, type(e))
0
集合的常用操作
    集合元素的判断操作
      in和not in
    集合元素的新增操作
      调用add(),一次添加一个元素
      调用update(),一次至少添加一个元素
    集合元素的删除操作
      调用remove()方法,一次删除一个指定元素,如果指定的元素不存在则抛出keyeroor
      调用discard()方法,一次删除一个指定元素,如果指定元素不存在抛出异常
      调用pop()方法,一次只删除一个任意元素
      调用clear()方法,清空集合
# 集合元素的删除
a = {1, 2, 3, 4, 5, 10, 20, 30, 100, 40, '6', 52}
a.remove(100)
# a.remove(200)  # 不存在时,抛出KeyError: 200
a.discard(40)
a.discard(50)  # 不存在时,不报错
a.pop()
# a.pop(2)  # 指定元素删除时,抛出TypeError: set.pop() takes no arguments (1 given)
print(a)
a.clear()
print(a)
0
  集合间的关系
    两个集合是否相等
      可以使用运算符 == 或 != 进行判断
    一个集合是否是另一个集合的子集
      可以调用方法issubset进行判断
      B是A的子集
    一个集合是否是另一个集合的超集
      可以调用方法issuperset进行判断
      A是B的超集
    两个集合是否没有交集
      可以调用方法isdisjoint进行判断
# 集合之间的关系
# 两个集合是否相等
s = {10, 20, 30, 40}
a = {20, 30, 40, 10}
print(s == a)  # 集合的元素是无序的,只要内容相同,存储顺序是相通的
print(s != a)

# 一个集合是否是另一个集合的子集
a = {1, 2, 3, 4, 5, 6, 7}
b = {1, 2, 3, 4, 5}
print(b.issubset(a))
print(a.issubset(b))

# 一个集合是否是另一个集合的超集
a = {1, 2, 3, 4, 5, 6, 7}
b = {1, 2, 3, 4, 5} print(a.issuperset(b)) print(b.issuperset(a)) # 两个集合是否没有交集 a = {1, 2, 3, 4} b = {5, 6, 7} c = {1, 4, 5} print(a.isdisjoint(b)) # 没有交集则返回True,有交集则返回False print(a.isdisjoint(c))
0
  集合的数学操作
# # 集合的数学操作
# 交集
a = {1, 2, 3, 4}
b = {1, 'b', 3, 'd'}
print(a.intersection(b))  # 交集
print(a & b)

# 并集
a = {1, 2, 3, 4}
b = {1, 'b', 3, 'd'}
print(a.union(b))  # 并集
print(a | b)

# 差集
print(a.difference(b))  # a集合中不属于交集的元素
print(a - b)

# 对称差集
print(a.symmetric_difference(b))  # 两个集合的差集总和
print(a)
print(b)
0
  集合生成式
    用于生成集合的公式:{ i*i for i in range(1,10)}
      将{}修改为[]就是列表生成式
      没有元组生成式
# 集合生成式
a = {i * i for i in range(1, 10)}
print(a)
0

列表、字典、元组、集合总结

数据结构
是否可变
是否重复
是否有序
定义符号
列表(list)
可变
可重复
有序
[]
元组(tuple)
不可变
可重复
有序
()
字典(dict)
可变
key不可重复
无序
{key:value}
value可重复
集合(set)
不可变
不可重复
无序
{}
posted @ 2022-07-07 10:39  乌醍  阅读(45)  评论(0编辑  收藏  举报