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))
集合的常用操作
集合元素的判断操作
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)
集合间的关系
两个集合是否相等
可以使用运算符 == 或 != 进行判断
一个集合是否是另一个集合的子集
可以调用方法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))
集合的数学操作
# # 集合的数学操作
# 交集
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)
集合生成式
用于生成集合的公式:{ i*i for i in range(1,10)}
将{}修改为[]就是列表生成式
没有元组生成式
# 集合生成式
a = {i * i for i in range(1, 10)}
print(a)
列表、字典、元组、集合总结
数据结构
|
是否可变
|
是否重复
|
是否有序
|
定义符号
|
列表(list)
|
可变
|
可重复
|
有序
|
[]
|
元组(tuple)
|
不可变
|
可重复
|
有序
|
()
|
字典(dict)
|
可变
|
key不可重复
|
无序
|
{key:value}
|
value可重复
|
||||
集合(set)
|
不可变
|
不可重复
|
无序
|
{}
|