集合(set)
1.什么是集合
python內(nèi)置的容器型數(shù)據(jù)類型.可變(支持增刪),無序(不支持下標(biāo)操作)
{元素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.數(shù)學(xué)集合運算(集合應(yīng)用的重點)
包含關(guān)系(<=, >=),并集(&&),交集,差集,補(bǔ)集
1).包含關(guān)系(>=, <=)
集合1 >= 集合2 - 判斷集合1中是否包含集合2
2)并集(|)
集合1 | 集合2 - 將集合1集合2所有元素合并在一起產(chǎn)生一個新的集合
3)交集(&)
集合1 & 集合2 - 將集合1集合2重復(fù)的元素合并在一起產(chǎn)生一個新的集合
4)差集 (-)
集合1 - 集合2 - 求集合1除了和集合2公共的元素以外的元素
5)補(bǔ)集(^) - 求兩個集合除了公共部分剩下的部分
^ 如何打出來(Shift+6)
7.相關(guān)操作
in / not in
set()
總結(jié):集合的應(yīng)用只要表現(xiàn)在去重和集合的數(shù)學(xué)運算
# 練習(xí):用三個列表表示三門學(xué)科的選課學(xué)生姓名
# 求:選課學(xué)生人數(shù)
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)
# 求只選了第一門學(xué)科的人的數(shù)量和名字
m = set(name) - set(name1) - set(name2)
print(len(m), m)
# 求只選了一門學(xué)科的人和名字
s = set(name1) - set(name) - set(name2)
d = set(name2) - set(name) - set(name1)
e = s | d | m
print(len(e), e)
# 求選了三門學(xué)科的學(xué)生和數(shù)量 q = set(name1) & set(name) & set(name2)
print(len(q), q)
# 求只選了兩門學(xué)科的學(xué)生和數(shù)量
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: [ ] 元素可以是任何的數(shù)據(jù)類型,類型可以不一致,元素可以重復(fù)(實際開發(fā)時,元素類型都是一樣的最好選列表)
# tuple:() 只有一個元素時: tuple1 = (1,) 元素可以是任何的數(shù)據(jù)類型,類型可以不一致,元素可以重復(fù)
# dict: {key: value} 保存鍵值對 - key: 值 key 不可變,唯一的 value(值) 可以是任何的數(shù)據(jù)類型,類型可以不一致,可以重復(fù)
# set : {} 空集表示為 n = set{} 元素唯一不可變的
4.增
"""
list: 列表.append(元素)、 列表.insert(下標(biāo),元素)
字典: 字典[key] = 值 、 字典.setdefault(key,值)
set: 集合.add(元素)
"""
5.刪
"""
list:del 列表[下標(biāo)] 列表.pop(下標(biāo)) 列表.remove(元素)
dict:del 字典[key] 字典.pop(key)
set: 集合.remove(元素)
"""
6.改
"""
list:列表[下標(biāo)] = 新值
dict:字典[key] = 新值
"""
7.查
"""
str:查單個, 切片, 遍歷
list:查單個, 切片, 遍歷
tuple:查單個, 切片, 遍歷
dict:查單個,遍歷
set:遍歷
"""
8.使用
"""
str:單獨文字?jǐn)?shù)據(jù)使用字符串(除了數(shù)字,和布爾表示的其他數(shù)據(jù))
list:保存多個具有相同意義的數(shù)據(jù)
tuple:多個數(shù)據(jù)的值或者是順序不能變的時候使用元祖(除了一些特殊意義的值,類似星期,其他一般不會選擇用元祖來作為容器)
dict:同時保存多個數(shù)據(jù)需要去區(qū)分的時候
set:對其他容器中的數(shù)據(jù)去重,或者做數(shù)學(xué)集合運算的時候
"""