python集合应用场景_十、python 集合的定义与使用
一、集合的定義
定義:由不同元素組成的集合,集合是一組無序排列 可hash值,可作為字典的key。
特性:集合的目的是將不同的值存放在一起,不同的集合間用來做關系運算,無須糾結于集合中的單個值。
(1、不同元素組成 2、無序 3、集合中的元素必須是不可變類型)
二、集合的使用
1、聲明集合
jihe = {1,2,3,4,5}#與字典看上去類似,但是是不一樣的。字典是 dict1 = {key:value,key2:value2,}需要key
(1)自動去重
注意,集合是有不同元素組成,所以即便里面的值重復了,也會去重。
例:
set1 = {1, 2, 4, 3, 3, 4, 4, 3, 3, 2, 2, 2, 2, 1}print(set1)
運行結果
(2)打印內容是無序的
例
set1 = {"陳司","怎能","不","是","大帥哥"}print(set1)
運行結果
2、添加元素 set.add() 方法
例:
set1 = {1,3}
set1.add(2)print(set1)
運行結果
3、刪除集合元素。
(1)set.pop() 與 set.remove()
例
set1 = {"s", 1, "234", 2}#pop會從集合中隨機刪除一個數
v =set1.pop()print(set1, "v =", v)#remove 可以傳參數刪除指定的值,但是要注意,如果傳的值不存在會報錯。慎用。
set1.remove(2)print(set1)
運行結果
(2)set.discard()
與remove()用法相同,但是如果元素不存在,不會報錯。
例
set1 = {"s", 1, "234", 2}
b= set1.discard("123123")print(b)
set1.discard("s")print(set1)
運行
三、集合的運算
在python 中,集合的概念,有點類似數學之中集合的概念。可以求出交集并集等運算操作。
1、交集 set.intersection()
場景:有兩組學生,第一組學生,選修了語文課,第二組學生,選修了數學課。但是其中有一些學生即選修了語文,也選修了數學,要求快速定位到這種學生。
例1,非集合方式。
#學習數學的人
stu_shuxue = ["陳司","李大","王二"]#學習語文的人
stu_yuwen = [ "陳司","王二"]#兩者都學的人,先暫定為空
stu_double =[]#循環輸出學習數學的人
for stu instu_shuxue:#如果學習數學的人,也在stu_yuwen 學習語文的人里。就是兩者都學的人。并追加到stu_double集合。
if stu instu_yuwen:
stu_double.append(stu)print(stu_double)
運行結果
例2,集合方式
stu_shuxue = {"陳司", "李大", "王二"}
stu_yuwen= {"陳司", "王二"}#取交集
print(stu_shuxue.intersection(stu_yuwen))
#寫法2
print(stu_shuxue&stu_yuwen)
運行
2、并集,set.union()方法
理解:把兩個結合中所有元素組合在一起,并排重后取出結果。
場景:還是剛才的兩組學生,求選修了數學和語文的全部同學名單。
例
stu_shuxue = {"陳司", "李大", "王二"}
stu_yuwen= {"陳司", "王二"}#取并集
print(stu_shuxue.union(stu_yuwen))#寫法2
print(stu_shuxue | stu_yuwen)
運行
3、差集 set.difference()
理解:兩個集合相減,A 減 B ,A 里有 1、2、3 B里有 2、3、4 如果 A 與B 的差集,會發現A 有 1 是B里沒有的。所以A 減 B 等于 1 ,反過來 B 減 A 就等于4 ,因為4 是A 集合里沒有的元素。
也就是說,發起差集的集合,會把自己有,而對方沒有的元素得到。說的直白點,我是帥,高,富。 你是 丑 , 高,富。咱們都有高和富,我減去你就是帥。你減去我就是丑。
例:
set1 = {"陳司","高","富","帥"}
set2= {"某人","高","富","丑"}
#方法1print(set1.difference(set2))
#方法2print(set1-set2)
運行結果
4、交叉補集 set.symmetric_difference()
理解。集合A 是1、2、3 集合B 是 2、3、4 交叉補集就只保留 1 和 4 。因為 1 是 A 獨有的, 4 是B 獨有的。交叉補集會去掉共有的部分,只保留雙方獨有的部分。
場景:選修語文的有一組學生,選修數學的有一組學生。已知有的學生既選修了數學,又同時選修了語文,求只選修了一門課程的學生。這種情況就適合交叉補集。
例
#學習語文的
set_yuwen = {"陳司","A","B","C"}
#學習數學的
set_shuxue= {"某人","A","B","C"}
#方法1print(set_shuxue.symmetric_difference(set_yuwen))
#方法2print(set_yuwen^set_shuxue)
運行結果
總結
以上是生活随笔為你收集整理的python集合应用场景_十、python 集合的定义与使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP商城数据库安全事务处理方法
- 下一篇: python安装不上怎么办_python