Python set集合 - Python零基礎入門教程
阿新 • • 發佈:2021-06-18
目錄
零基礎 Python 學習路線推薦 :Python 學習目錄>>Python 基礎入門
在 Python 變數中除了以前文章所提到的整形 int / 浮點數 float / 布林值 bool /列表 list/字典 dict 之外,還有一個型別我們還沒有做詳細介紹,這個變數型別就是集合 set。
一.set 集合簡介
Python set 集合使用大括號 { } 表示,與字典 dict 不同的是 set 集合並沒有 key / value 鍵值對,主要有以下兩個特點:
- 1.元素不允許重複;
- 2.set 不記錄元素的新增順序,即是無序的,和字典類似;
# !usr/bin/env python # -_- coding:utf-8 \__- """ @Author:猿說程式設計 @Blog(個人部落格地址): www.codersrc.com @File:Python set 集合.py @Time:2021/04/04 11:00 @Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累! """ # 建立一個空集合 set set_a=set() # 列印集合 set print(set_a) # 檢視型別 print(type(set_a)) print("*\*\*"*20) # 建立一個集合 set_b={"猿說 python",False} print(type(set_b)) print(set_b) print("*\*\*"*20) # 建立一個字典 dict_b={"name":"猿說 python","url":"www.codersrc.com"} print(type(dict_b)) print(dict_b) ''' 輸出結果: set() <class 'set'> *** <class 'set'> {False, '猿說 python'} *** <class 'dict'> {'name': '猿說 python', 'url': 'www.codersrc.com'} '''
程式碼分析:觀察上面程式碼,雖然字典 dict 和 集合 set 都是由 {} 構成,注意字典由鍵值對 key / value 構成,而集合確是由一個一個數據構成,和列表 list 的元素類似!
二.set 集合常用函式
- add — 向 set 集合中新增元素;
- remove— 刪除元素,如果集合中不包含被刪除的元素,remove() 方法會報出 KeyError 異常;
- discard — 刪除元素,如果集合中不包含被刪除的元素,不會有任何提示或者 異常;
- clear— 就是清空白 set 集合;
- copy— 拷貝一個集合;
- **difference**— 返回多個集合的差集;
- difference_update
- intersection— 返回集合的交集,不改變集合本身,而是返回兩個集合的交集;
- intersection_update— 返回集合的交集,會通過交集運算改變第一個集合;
- isdisjoint— 判斷兩個集合是否包含相同的元素,如果沒有返回 True,否則返回 False;
- issubset— 判斷指定集合是否為該方法引數集合的子集;
- issuperset— 判斷該方法的引數集合是否為指定集合的子集;
- pop— 隨機移除元素;
- symmetric_difference— 移除當前集合中在另外一個指定集合相同的元素,並將另外一個指定集合中不同的元素插入到當前集合中;
- union— 返回兩個集合的並集;
- update— 用於修改當前集合,可以新增新的元素或集合到當前集合中,如果新增的元素在集合中已存在,則該元素只會出現一次,重複的會忽略;
# !usr/bin/env python
# -_- coding:utf-8 \__-
"""
@Author:猿說程式設計
@Blog(個人部落格地址): www.codersrc.com
@File:Python set 集合.py
@Time:2021/04/04 11:00
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
# 使用花括號構建 set 集合
c={'喬峰',"段譽","虛竹","天龍八部","射鵰英雄傳"}
# 新增元素
c.add("天山姥姥")
c.add(6)
print("c 集合的元素個數為:",len(c))
print(c)
# 刪除指定元素
c.remove("天山姥姥")
print(c)
print("c 集合的元素個數為:",len(c))
print("*\*\*"*20)
# 判斷是否包含指定字串
print("c 集合是否包含'喬峰'字串:",("喬峰"inc))# 輸出 True
print("*\*\*"*20)
# 使用 set()函式(構造器)來建立 set 集合
movies=set()
movies.add("天龍八部")
movies.add("射鵰英雄傳")
print("movies 集合的元素:",movies)
#issubset()方法判斷是否為子集合
print("movies 集合是否為 c 的子集合?",movies.issubset(c))# 輸出 False
#issuperset()方法判斷是否為父集合
#issubset 和 issuperset 其實就是倒過來判斷
print("c 集合是否完全包含 books 集合?",c.issuperset(movies))# 輸出 False
# 用 c 集合減去 books 集合裡的元素,不改變 c 集合本身
result1=c-movies
print(result1)
#difference()方法也是對集合做減法,與用-執行運算的效果完全一樣
result2=c.difference(movies)
print(result2)
# 用 c 集合減去 books 集合裡的元素,改變 c 集合本身
c.difference_update(movies)
print("c 集合的元素:",c)
# 刪除 c 集合裡的所有元素
c.clear()
print("c 集合的元素:",c)
print("*\*\*"*20)
# 直接建立包含元素的集合
d={"python 面向物件",'python 基礎','python 爬蟲'}
print("d 集合的元素:",d)
#intersection()方法也是獲取兩個集合的交集,與用&執行運算的效果完全一樣
inter2=d.intersection(movies)
print(inter2)
# 計算兩個集合的交集,改變 d 集合本身
d.intersection_update(movies)
print("d 集合的元素:",d)
print("*\*\*"*20)
# 將 range 物件包裝成 set 集合
e=set(range(5))
f=set(range(3,7))
print("e 集合的元素:",e)
print("f 集合的元素:",f)
# 計算兩個集合的並集,不改變 e 集合本身
un=e.union(f)
print('e 和 f 執行並集的結果:',un)
# 計算兩個集合的並集,改變 e 集合本身
e.update(f)
print('e 集合的元素:',e)
'''
輸出結果:
c 集合的元素個數為: 7
{'天龍八部', 6, '虛竹', '喬峰', '段譽', '天山姥姥', '射鵰英雄傳'}
{'天龍八部', 6, '虛竹', '喬峰', '段譽', '射鵰英雄傳'}
c 集合的元素個數為: 6
***
c 集合是否包含'喬峰'字串: True
***
movies 集合的元素: {'天龍八部', '射鵰英雄傳'}
movies 集合是否為 c 的子集合? True
c 集合是否完全包含 books 集合? True
{'喬峰', '段譽', 6, '虛竹'}
{'喬峰', '段譽', 6, '虛竹'}
c 集合的元素: {6, '虛竹', '喬峰', '段譽'}
c 集合的元素: set()
***
d 集合的元素: {'python 爬蟲', 'python 基礎', 'python 面向物件'}
set()
d 集合的元素: set()
***
e 集合的元素: {0, 1, 2, 3, 4}
f 集合的元素: {3, 4, 5, 6}
e 和 f 執行並集的結果: {0, 1, 2, 3, 4, 5, 6}
e 集合的元素: {0, 1, 2, 3, 4, 5, 6}
'''
三.set 集合運算子
- <=:相當於呼叫 issubset() 方法,判斷前面的 set 集合是否為後面的 set 集合的子集合。
- >=:相當於呼叫 issuperset() 方法,判斷前面的 set 集合是否為後面的 set 集合的父集合。
- –:相當於呼叫 difference() 方法,用前面的 set 集合減去後面的 set 集合的元素。
- &:相當於呼叫 intersection() 方法,用於獲取兩個 set 集舍的交集。
- ^:計算兩個集合異或的結果,就是用兩個集合的並集減去交集的元素。
# !usr/bin/env python
# -_- coding:utf-8 \__-
"""
@Author:猿說程式設計
@Blog(個人部落格地址): www.codersrc.com
@File:Python set 集合.py
@Time:2021/04/04 11:00
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
# 使用花括號構建 set 集合
c={'喬峰',"段譽","虛竹","天龍八部","射鵰英雄傳"}
# 使用 set()函式(構造器)來建立 set 集合
movies=set()
movies.add("天龍八部")
movies.add("射鵰英雄傳")
print("movies 集合的元素:",movies)
#issubset()方法與<=運算子效果相同
print("movies 集合是否為 c 的子集合?",(movies<=c))# 輸出 False
print("*\*\*"*20)
e=set(range(5))
f=set(range(3,7))
print("e 集合的元素:",e)
print("f 集合的元素:",f)
# 對兩個集合執行異或運算
xor=e^f
print('e 和 f 執行 xor 的結果:',xor)
# 直接建立包含元素的集合
d={"python 面向物件",'python 基礎','python 爬蟲'}
print("d 集合的元素:",d)
# 計算兩個集合的交集,不改變 d 集合本身
inter1=d&movies
print(inter1)
'''
輸出結果:
movies 集合的元素: {'天龍八部', '射鵰英雄傳'}
movies 集合是否為 c 的子集合? True
***
e 集合的元素: {0, 1, 2, 3, 4}
f 集合的元素: {3, 4, 5, 6}
e 和 f 執行 xor 的結果: {0, 1, 2, 5, 6}
d 集合的元素: {'python 基礎', 'python 面向物件', 'python 爬蟲'}
set()
'''
四.猜你喜歡
- Python 字串/列表/元組/字典之間的相互轉換
- Python 區域性變數和全域性變數
- Python type 函式和 isinstance 函式區別
- Python is 和 == 區別
- Python 可變資料型別和不可變資料型別
- Python 淺拷貝和深拷貝
- Python 遞迴函式
- Python sys 模組
- Python 列表 list
- Python 元組 tuple
- Python 字典 dict
- Python 條件推導式
- Python 列表推導式
- Python 字典推導式
- Python 函式宣告和呼叫
- Python 不定長引數 *argc/**kargcs
未經允許不得轉載:猿說程式設計 » Python set 集合
本文由部落格 - 猿說程式設計 猿說程式設計 釋出!