Day9 集合 set

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))

你可能感兴趣的:(Day9 集合 set)