集合(set)
1.什么是集合
python内置的容器型数据类型.可变(支持增删),无序(不支持下标操作)
{元素1,元素2,元素3...}
元素要求是不可变并且唯一
set1 = {1, 2, 3, 4, 'abc'}
print(set1)
空集合写法 - 直接写set3 = { } 类型是字典
set3 = set()
2.查
集合没有办法单独取出某一个元素:只能遍历
set1 = {1, 2, 3, 4, 'abc'}
for item in set1:
print(item)
3.增
集合.add(元素) - 在集合中添加指定的元素
set1 = {1, 2, 3, 4, 'abc'}
set1.add(100)
print(set1)
集合 .update(序列) - 将序列中的元素(不可变的)添加到集合中
set1 = {1, 2, 3, 4, 'abc'}
set1.update('abc')
4.删
集合.remove(元素) - 删除集合中指定的元素(元素不存在会报错)
set2 = {1, 2, 3, 100, 200}
set2.remove(1)
print(set2)
集合.clear() - 清空集合
5. 改 - 不支持改操作(元素不可变) 只能先删想改的元素,在增加一个想要的元素
6.数学集合运算(集合应用的重点)
包含关系(<=, >=),并集(&&),交集,差集,补集
1).包含关系(>=, <=)
集合1 >= 集合2 - 判断集合1中是否包含集合2
2)并集(|)
集合1 | 集合2 - 将集合1集合2所有元素合并在一起产生一个新的集合
3)交集(&)
集合1 & 集合2 - 将集合1集合2重复的元素合并在一起产生一个新的集合
4)差集 (-)
集合1 - 集合2 - 求集合1除了和集合2公共的元素以外的元素
5)补集(^) - 求两个集合除了公共部分剩下的部分
^ 如何打出来(Shift+6)
7.相关操作
in / not in
set()
总结:集合的应用只要表现在去重和集合的数学运算
# 练习:用三个列表表示三门学科的选课学生姓名
# 求:选课学生人数
name = ['name1', 'name2', 'name3', 'name4', 'name5', 'name6']
name1 = ['name1', 'name2', 'name7', 'name8', 'name9', 'name10']
name2 = ['name2', 'name3', 'name4', 'name7', 'name11', 'name12']
n = set(name) | set(name1) | set(name2)
print(len(n), n)
# 求只选了第一门学科的人的数量和名字
m = set(name) - set(name1) - set(name2)
print(len(m), m)
# 求只选了一门学科的人和名字
s = set(name1) - set(name) - set(name2)
d = set(name2) - set(name) - set(name1)
e = s | d | m
print(len(e), e)
# 求选了三门学科的学生和数量 q = set(name1) & set(name) & set(name2)
print(len(q), q)
# 求只选了两门学科的学生和数量
t = n - e - q
print(len(t), t)
容器
1容器类型: 字符串(str), 列表(list), 元祖(tuple), 字典(dict), 集合(set)
2.特点
# str: 不可变、 有序
# list: 可变、 有序
# tuple :不可变、 有序
# dict: 可变(值可变,key不可变)、无序
# set: 可变 、 无序
3.值
# str: " " 或者 ' '或者""" """或者''' '''(python中三个'或者三个"""也表示字符串)
# list: [ ] 元素可以是任何的数据类型,类型可以不一致,元素可以重复(实际开发时,元素类型都是一样的最好选列表)
# tuple:() 只有一个元素时: tuple1 = (1,) 元素可以是任何的数据类型,类型可以不一致,元素可以重复
# dict: {key: value} 保存键值对 - key: 值 key 不可变,唯一的 value(值) 可以是任何的数据类型,类型可以不一致,可以重复
# set : {} 空集表示为 n = set{} 元素唯一不可变的
4.增
"""
list: 列表.append(元素)、 列表.insert(下标,元素)
字典: 字典[key] = 值 、 字典.setdefault(key,值)
set: 集合.add(元素)
"""
5.删
"""
list:del 列表[下标] 列表.pop(下标) 列表.remove(元素)
dict:del 字典[key] 字典.pop(key)
set: 集合.remove(元素)
"""
6.改
"""
list:列表[下标] = 新值
dict:字典[key] = 新值
"""
7.查
"""
str:查单个, 切片, 遍历
list:查单个, 切片, 遍历
tuple:查单个, 切片, 遍历
dict:查单个,遍历
set:遍历
"""
8.使用
"""
str:单独文字数据使用字符串(除了数字,和布尔表示的其他数据)
list:保存多个具有相同意义的数据
tuple:多个数据的值或者是顺序不能变的时候使用元祖(除了一些特殊意义的值,类似星期,其他一般不会选择用元祖来作为容器)
dict:同时保存多个数据需要去区分的时候
set:对其他容器中的数据去重,或者做数学集合运算的时候
"""