基本数据类型--集合
一、集合Set类
1).Set特点
- 可以由不同元素组成(相同类型中相同的值会只保留一个)
- 无序、元素为不可变类型(数字、字符串、元组)
- 可修改
2).Set书写
- 定义集合,注意不能通过索引取值
s = {1,2,3,4,5}
- 转换可迭代的方式定义
s = set('hello')
3). 内置方法
s = {1,2,3,4,5,6}
- 添加一个元素
s.add(6)
- 清空集合元素
s.clear()
- 浅拷贝
s1 = s.copy
- 随机删除一个元素并取值
s1 = s.pop()
- 指定删除,如果不存在,会报错
s.remove(2)
- 指定删除,如果不存在,不会报错
s.discard('1111')
4). 转换为不可变集合
s = {1,2,3,4}
f = frozenset(s)
二、集合的关系运算
1). 自身不变的计算
p_s={'lcg','szw','zjw','lcg'}
l_s={'lcg','szw','sb'}
- 求交集,返回这个集合
p_s.intersection(l_s)
# 简写方式
p_s&l_s
- 求并集,返回这个集合
p_s.union(l_s)
# 简写方式
p_s|l_s
- 差集,返回这个集合,书写交换位置意义不同
p_s.difference(l_s)
# 简写,差集,返回这个集合
p_s-l_s
- 交叉补集,返回这个集合
p_s.symmetric_difference(l_s)
# 交叉补集,返回这个集合
p_s^l_s
2). 自身更新的计算
p_s={'lcg','szw','zjw','lcg'}
l_s={'lcg','szw','sb'}
- 将本身集合中和另一个集合共同的元素删除,返回None
p_s.difference_update(l_s)
- 将本身集合中和另一个集合共同的元素删除并将另一个独有的元素添加到本身集合中,返回None
p_s.symmetric_difference_update(l_s)
3). 返回布尔值
s1={1,2}
s2={2,3,5}
- 如果两个set没有交集,返回True
s1.isdisjoint(s2)
- 判断s1 是s2 的子集
s1.issubset(s2)
# 也可以表示为
s1 <= s2
- 判断s1 是s2 的父集
s2.issuperset(s1)
# 也可以表示为
s2 >= s1
4). 补充
-
一般集合是可变的(追加、删除),但是无法修改里面含有的元素
-
定义不可变集合
s = frozenset('hello')
- 简单去重的技巧,不考虑顺序
names=['alf','alf','wupeiqi']
names=list(set(names))
三、补充

网友评论