1.什么是集合
python内置的内容型数据类型。可变(支持增删改),无序(不支持下标操作)
语法:{元素1,元素2,元素3,...}
*要求是不可变并且唯一
set1 = {1,2,3,'abc'}
print(set1,type(set1))
空集合:set()
set3 = set()
print(type(set3))
2.元素的增删改查
a.查
集合不能单独取出某一个元素;只能遍历 用 ‘for _ in 集合’ 进行遍历, 不能用while
for item in set1:
print(item)
b.增
集合.add(元素) - 在集合中添加指定的元素
set2 = {100,2,3,4,10}
set2.add(99)
print(set2)
集合.update(序列)
set2.update('abc')
print(set2)
set2.update([1,2])
print(set2)
set2.update({'aa': 11,'bb': 22}) # 添加字典,只是对于 key 进行添加
print(set2)
c.删
集合.remove(元素) - 删除集合中指定元素
set2 = {100,2,3,4,10}
set2.remove(100)
print(set2)
集合.clear() - 清空集合
set2.clear()
print(set2)
5.改 (集合不支持该操作)
6.数学集合运算(集合运用的重点)!
包含关系(>= , <= )、并集()、交集、差集、补集
a.包含关系
集合1 >= 集合2 - 判断集合1中是否包含集合2
集合1 <= 集合2 - 判断集合2中是否包含集合1
print({1,2,3,4,5} >= {1,2,3})
b.并集(|)
集合1 | 集合2 -将集合1 和集合2 合并在一起,自动去重
set1 = {1,2,3}
set2 = {2,3,4}
print(set1 | set2)
c.交集(&)
集合1 & 集合2 - 集合1 与 集合2 相同的元素
print(set1 & set2)
d.差集(-)
集合1 - 集合2 - 集合1中 与集合2 不相同的元素
print(set2 - set1)
e.补集(^)
集合1 ^ 集合2 - 集合1 与 集合2 不相同的元素集合
print(set1 ^ set2)
7.相关的操作
in / not in
print(1 in {1,2,3})
set()
print(set([1,1,2,2,3,4,3,5]))
总结:集合的应用主要表现在去重和数据集合运算
练习: 用三个列表表示三门学科的选课学生姓名
yuwen_list = ['小王','小李','小张','小赵']
shuxue_list = ['小李','小钱','小赵','小黑']
yingyu_list = ['小王','小赵','小黄','小白']
### 1、求选课学生一共有多少人
num = set(yuwen_list)|set(yingyu_list)|set(shuxue_list)
print(num,len(num))
### 2、求只选了第一个学科的人的数量
num1 = set(yuwen_list) - set(yingyu_list) - set(shuxue_list)
print(num1,len(num1))
### 3、求只选了一门学科的学生的数量
num2 = (set(yuwen_list)^set(shuxue_list)^set(yingyu_list)) - (set(yuwen_list)&set(shuxue_list)&set(yingyu_list))
print(num2,len(num2))
### 4、求只选了两门学科的学生的数量
num3 = ((set(yuwen_list)&set(shuxue_list)) | (set(shuxue_list)&set(yingyu_list))) ^ (set(yuwen_list) & set(yingyu_list))
print(num3,len(num3))
# 5、求选了三门学科的学生数量
num4 = set(yingyu_list)&set(yuwen_list)&set(shuxue_list)
print(num4,len(num4))