07-集合Set

集合描述

  1. Python语言提供的内置数据结构;
  2. 集合中的元素是无序的,且集合中的元素是不可重复的
  3. 与列表、字典一样都属于可变数据类型的序列

集合创建

直接{}创建

set1 = {1,2,3,4,5}
print(set1) # {1, 2, 3, 4, 5}
print(type(set1)) # <class 'set'>

使用内置函数set()

set()–创建集合时,如果传入的序列有重复的值,集合会把重复的值删掉,只留一个。

set2 = set([1,2,3,1,2,4])
print(set2) # {1, 2, 3, 4}
print(type(set2))# <class 'set'>

空集合定义

空集合定义时,不能直接通过{}定义,这样定义出来的是一个字典类型。需要通过内置函数set()来定义,例子如下:

dict1 = {}
print(dict1) # {}
print(type(dict1)) # <class 'dict'>

set1 = set()
print(set1) # set()
print(type(set1)) # <class 'set'>

集合判断in/not in

在集合中判断一个元素在不在一个集合中,可以使用in/not in来判断;

set1 = {'a','b','c','d'}
print('a' in set1) # True
print('a' not in set1) # False

集合元素新增

set.add()新增单个元素

set1 = {'a','b','c','d'}
print(set1) # {'b', 'd', 'c', 'a'}
set1.add(False)
print(set1) # {False, 'b', 'c', 'a', 'd'}

set.update({})新增多个元素

set1 = {'a','b','c','d'}
set2 = {1,2,3}
set1.update(set2)
print(set1) # {1, 2, 3, 'c', 'a', 'b', 'd'}

集合元素删除

set.remove()删除指定元素

set.remove()–删除指定的元素,当元素不存在时报错

set1 = {'a','b','c','d'}
print(set1.remove('a')) # None
print(set1) # {'c', 'b', 'd'}

# print(set1.remove('q')) # KeyError: 'q'

set.discard()删除指定元素,不报错

set.discard()–删除指定的元素,当元素不存在时不会报错

set1 = {'a','b','c','d'}
print(set1.discard('a')) # None
print(set1) # {'c', 'b', 'd'}

print(set1.discard('1')) # None

set.pop()删除任意元素

set1 = {'a','b','c','d'}
print(set1.pop()) # d
print(set1.pop()) # b
print(set1.pop()) # c
print(set1.pop()) # a
print(set1.pop()) # KeyError: 'pop from an empty set'

set.clear()清空元素

set1 = {'a','b','c','d'}
print(set1.clear()) # None
print(set1) # set() 空集合

集合间的关系

判断两个集合是否相等

set1 = {1,2,3,4}
set2 = {1,2,3,4}
set3 = {1,2,6}

print(set1 == set2) # True
print(set1 == set3) # False

print(set1 != set2) # False
print(set1 != set3) # True

一个集合是另一个集合的子集

子集:就是集合1的所有元素都可以在集合2中找到,那集合1就是集合2的子集
在这里插入图片描述上图上:集合A是集合B的子集。

set1 = {1,2,3,4}
set2 = {1,2,5}
set3 = {1,2}

print(set1.issubset(set1)) # True 集合相等则互为子集
print(set2.issubset(set1)) # False set2不是set1的集合
print(set3.issubset(set1)) # True set3是set1的子集

一个集合是另一个集合的超集

在这里插入图片描述
上图所示:集合S1是集合S2的超集,集合S2是集合S1的子集

set1 = {1,2,3,4}
set2 = {1,2,5}
set3 = {1,2}

print(set1.issuperset(set1)) # True 集合相等则互为超集
print(set1.issuperset(set2)) # False set1不是set2的超集
print(set1.issuperset(set3)) # True set1是set3的超集

两个集合是否有交集

在这里插入图片描述上图中:集合A和集合B互为交集
set.isdisjoint()–判断两个集合是否包含相同的元素,如果没有返True ,否则返回False

set1 = {1,2,3,4}
set2 = {1,2,5}
set3 = {1,2}
set4 = {'a','b','c'}

# 注意:是交集则返回Flase,不是交集则返回True
print(set1.isdisjoint(set1)) # False
print(set1.isdisjoint(set2)) # False
print(set1.isdisjoint(set3)) # False
print(set1.isdisjoint(set4)) # True 
print(set2.isdisjoint(set1)) # False

集合的数学操作

交集

set1 = {1,2,3,4,5,'c','d'}
set2 = {1,2,3,'a','b'}

print(set1 & set2) # {1, 2, 3}
print(set1.intersection(set2)) # {1, 2, 3}

并集

set1 = {1,2,3,4,5,'c','d'}
set2 = {1,2,3,'a','b'}

print(set1 | set2) # {'c', 1, 2, 3, 4, 5, 'a', 'b', 'd'}
print(set1.union(set2)) # {'c', 1, 2, 3, 4, 5, 'a', 'b', 'd'}

差集

set1 = {1,2,3,4,5,'c','d'}
set2 = {1,2,3,'a','b'}

print(set1 - set2) # {'c', 'd', 4, 5}
print(set1.difference(set2)) # {'c', 'd', 4, 5}

对称差集

set1 = {1,2,3,4,5,'c','d'}
set2 = {1,2,3,'a','b'}

print(set1 ^ set2) # {4, 5, 'd', 'a', 'b', 'c'}
print(set1.symmetric_difference(set2)) # {4, 5, 'd', 'a', 'b', 'c'}

集合推导式

print({i for i in range(1,10)}) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print({i*i for i in range(1,10)}) # {64, 1, 4, 36, 9, 16, 49, 81, 25}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值