python 集合

  • 创建集合(两种方法)
  • 判断元素是否存在 (not)in
  • 增 s.add() s.update()
  • 删 s.remove() s.discard() s.pop() s.clear()
  • 集合间的关系(相等,是子集,是超集,有交集)
    s1==s2
    s1.issubset(s2)
    s1.issuperset(s2)
    s1.isdisjoint(s2)
  • 集合的数学操作 (求交,求并,求差,求对称差)
    s1.intersection(s2) == s1 & s2
    s1.union(s2) == s1 | s2
    s1.difference(s2) == s1 - s2
    s1.symmetric_difference(s2) == s1 ^ s2
  • 集合生成式
# ==================== 创建集合
# {,,,} 集合中的元素有重复会自动合并
s = {1,2,2,3,4,5,6,6}
print(s)               # {1, 2, 3, 4, 5, 6}
# 内置函数set()
s1 = set(range(6))
print(s1)              # {0, 1, 2, 3, 4, 5}
s = set([1,2,2,6])     # 把列表转集合
print(s, type(s))      # {1, 2, 6} <class 'set'>
s = set((1,2,2,65))    # 把元组转集合
print(s, type(s))      # {65, 1, 2} <class 'set'>
# so, 集合是无序的
s = set('python')
print(s, type(s))      # {'o', 'h', 'p', 'n', 'y', 't'} <class 'set'>
s = set({1,2,2,6})
print(s, type(s))      # {1, 2, 6} <class 'set'>
# 空集合,区别于空字典
s = set()
print(type(s))         # <class 'set'>
s1 = {}
print(type(s1))        # <class 'dict'>

# ==================== 判断元素是否存在,增删
s = {1,2,3}
print(1 in s)          # True
s.add(7)               # 一次加一个元素
print(s)               # {1, 2, 3, 7}
s.update({'集合',22})   # 一次加多个元素
print(s)               # {1, 2, 3, 22, 7, '集合'}
s.update(['列表',33])
print(s)               # {1, 2, 3, 33, 22, 7, '集合', '列表'}
s.update(('元组',66))
print(s)               # {1, 2, 3, 66, 7, 22, '列表', '元组', 33, '集合'}
s.remove('集合')
print(s)               # {1, 2, 3, 66, 7, 22, '元组', 33, '列表'}
# s.remove('111')      # KeyError
s.discard('列表')
s.discard(111)
print(s)               # {1, 2, 3, 66, '元组', 7, 22, 33}
s.pop()                # 一次删除一个任意元素,不能写参数
# s.pop(22)            # TyprError
print(s)               # {2, 3, 66, 7, 22, 33, '元组'}
s.clear()
print(s)               # set()

# ==================== 集合间的关系
# 相等 == !=
s1 = {1,2,3,4}
s2 = {2,4,3,3,1}
print(s1==s2)              # True
# 子集 .issubset()
s3 = {1,2}
s4 = {5,2}
print(s3.issubset(s1))     # True
print(s4.issubset(s1))     # False
# 超集 .issuperset()
print(s1.issuperset(s3))   # True
print(s1.issuperset(s1))   # True
# 交集 注意:有交集为 False
print(s4.isdisjoint(s1))   # False

# ==================== 集合的数学操作
s1 = {1,2,3,4}
s2 = {2,3,5,6,7}
# 求交集
print(s1.intersection(s2))    # {2,3}
print(s1 & s2)                # {2,3}
# 求并集
print(s1.union(s2))           # {1, 2, 3, 4, 5, 6, 7}
print(s1 | s2)                # {1, 2, 3, 4, 5, 6, 7}
# 求差集 (注意顺序)
print(s1.difference(s2))      # {1, 4}
print(s1 - s2)                # {1, 4}
# 求对称差集
print(s1.symmetric_difference(s2))  # {1, 4, 5, 6, 7}
print(s1 ^ s2)                      # {1, 4, 5, 6, 7}

# ==================== 集合生成式
# (回忆:列表)
lst = [ i*i for i in range(6)]
print(lst)                     # [0, 1, 4, 9, 16, 25]
# 集合生成式
s = { i*i for i in range(6)}
print(s)                       # {0, 1, 4, 9, 16, 25}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值