目錄

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比蠡縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式蠡縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋蠡縣地區(qū)。費(fèi)用合理售后完善,十年實體公司更值得信賴。
前幾節(jié)我們已經(jīng)介紹了Python 中的 列表list , 元組tuple 和 字典dict ,本節(jié)來介紹Python 中的最后一種數(shù)據(jù)結(jié)構(gòu)—— 集合set 。
Python 中的 set 與 dict 很像,唯一的不同是, dict 中保存的是 鍵值對 ,而 set 中只保存 鍵 ,沒有 值 。
Python 集合 有如下特點(diǎn):
Python 集合的聲明有兩種方式:
創(chuàng)建 空集合 時,只能用 set() ,而不能用 {} :
創(chuàng)建 非空集合 時,可以用 set() ,也可以用 {} :
由于集合中的元素是唯一的,如果初始化時的 可迭代 數(shù)據(jù)中有重復(fù)的元素,則會自動刪去重復(fù)的元素:
使用 len() 函數(shù)可以查看集合中元素的個數(shù):
由于Python 集合中的元素的是無序的,所以可不能使用 下標(biāo) 的方式來訪問集合中的單個元素。
我們可以使用 for 循環(huán) 來遍歷集合中的所有元素:
我們可以對兩個集合進(jìn)行如下運(yùn)算:
交集與并集
in 運(yùn)算
使用 dir(set) 查看集合支持的所有方法:
下面一一介紹這些 非魔法方法 ,共17 個。
1. add 方法
由于集合中的元素是唯一的,向集合中添加元素時有兩種情況:
示例:
2. remove 方法
示例:
3. discard 方法
示例:
4. pop 方法
示例:
5. union 方法
示例:
6. update 方法
示例:
7. clear 方法
示例:
8. copy 方法
示例:
9. difference 方法
示例:
10. difference_update 方法
示例:
11. intersection 方法
示例:
12. intersection_update 方法
示例:
13. isdisjoint 方法
示例:
14. issubset 方法
示例:
15. issuperset 方法
示例:
16. symmetric_difference 方法
示例:
17. symmetric_difference_update 方法
示例:
(完。)
推薦閱讀:
Python 簡明教程 --- 8,Python 字符串函數(shù)
Python 簡明教程 --- 9,Python 編碼
Python 簡明教程 ---10,Python 列表
Python 簡明教程 ---11,Python 元組
Python 簡明教程 ---12,Python 字典
1、complex()
返回一個形如?a+bj?的復(fù)數(shù),傳入?yún)?shù)分為三種情況:
參數(shù)為空時,返回0j;參數(shù)為字符串時,將字符串表達(dá)式解釋為復(fù)數(shù)形式并返回;參數(shù)為兩個整數(shù)(a,b)時,返回?a+bj;參數(shù)只有一個整數(shù) a 時,虛部 b 默認(rèn)為0,函數(shù)返回?a+0j。
2、dir()
不提供參數(shù)時,返回當(dāng)前本地范圍內(nèi)的名稱列表;提供一個參數(shù)時,返回該對象包含的全部屬性。
3、divmod(a,b)
a -- 代表被除數(shù),整數(shù)或浮點(diǎn)數(shù);b -- 代表除數(shù),整數(shù)或浮點(diǎn)數(shù);根據(jù) 除法運(yùn)算 計算 a,b 之間的商和余數(shù),函數(shù)返回一個元組(p,q)?,p 代表商?a//b?,q 代表余數(shù)?a%b。
4、enumerate(iterable,start=0)
iterable -- 一個可迭代對象,列表、元組序列等;start -- 計數(shù)索引值,默認(rèn)初始為0‘該函數(shù)返回枚舉對象是個迭代器,利用 next() 方法依次返回元素值,每個元素以元組形式存在,包含一個計數(shù)元素(起始為 start )和 iterable 中對應(yīng)的元素值。
在寫python程序時,常能用到一些函數(shù)和方法,總結(jié)一下,保存起來,方便查詢。
一、內(nèi)置函數(shù)
# abs()獲取數(shù)字絕對值
# chr(i)數(shù)字轉(zhuǎn)換為字符類型
# divmod() 獲取兩個數(shù)值的商和余數(shù)
# enumerate() 將可遍歷序列組合為索引序列
# float()轉(zhuǎn)換為浮點(diǎn)數(shù)
# format() 格式化字符串
# int()轉(zhuǎn)換為整數(shù)?
# input() 接受用戶輸入內(nèi)容
# len() 計算元素個數(shù)
# max() 返回最大值
# min() 返回最小值
# math.ceil() 返回指定數(shù)值的上舍整數(shù)
# open()打開文件并返回文件對象
# pow() 冪運(yùn)算
# print()打印輸出?
# range() 生成器
# reversed()反轉(zhuǎn)所有元素
# round()四舍五入求值
# sorted()對可迭代對象進(jìn)行排序?
# str() 轉(zhuǎn)換為字符串
# sum() 求和
# set() 創(chuàng)建集合
# tuple() 將序列轉(zhuǎn)換為元組
# zip()將可迭代對象打包成元組
二、方法
# append() 添加列表元素
# capitalize()首字母轉(zhuǎn)換為大寫?
# count()字符出現(xiàn)次數(shù)
# close() 關(guān)閉文件
# decode() 解碼字符串
# dict.keys() 獲取字典所有的鍵
# find()字符串首次出現(xiàn)的索引
# f.read() 讀取文件內(nèi)容
# dict.update()更新字典
# dict.items() 獲取字典鍵/值對
# dict.get() 返回指定鍵的值
# encode() 編碼字符串
# list.sort() 排序列表元素
# index() 元素首次出現(xiàn)的索引
# isdigit() 判斷字符串是否只由數(shù)字組成
# isupper() 是否所有字母都為大寫
# isnum() 判斷字符串是否由字母和數(shù)字組成
# islower() 是否所有字母都為小寫
# isdecimal() 檢查字符串是否只包含十進(jìn)制字符
# isalpha() 檢測字符串是否為純字母
# random.shuffle()隨機(jī)排序
# random.sample()返回?zé)o重復(fù)隨機(jī)數(shù)列表
# random.choice() 返回一個隨機(jī)元素
# random.randint() 生成指定范圍的隨機(jī)整數(shù)
# random.randrange() 生成指定范圍的指定遞增基數(shù)隨機(jī)整數(shù)
# pop() 刪除列表中的元素
# remove()刪除列表中的指定元素
# strip()去除空格
# lstrip()去除左側(cè)空格
# rstrip() 去除右側(cè)空格
# readline() 讀取單行內(nèi)容
# root.after() Tkinter中等待一段時間后再執(zhí)行命令
# str.isnumeric() 驗證字符串是否為數(shù)字(適用于Unicode)
# split()分割字符串
# ord() 將字符轉(zhuǎn)換為整數(shù)
# replace() 字符串替換
# ljust() 左對齊填充
# rjust() 左對齊填充
# readlines() 讀取所有行內(nèi)容
# datetime.datetime.now() 返回指定時區(qū)的本地日期時間
# datetime.datetime.today() 獲取當(dāng)前本地日期的date對象
# datetime.utcnow() 返回當(dāng)前UTC時間的datetime對象
# time.strptime()把時間字符串解析為元組
# time.time()返回當(dāng)前時間的時間戳
# time.sleep()暫停指定秒數(shù)
# time.strftime() 返回指定格式的日期字符串
# time.mktime() 接收時間元組并返回時間戳
# os.getcwd() 獲取當(dāng)前工作目錄
# os.listdir() 獲取指定路徑下的目錄和文件列表
# os.makedirs() 遞歸創(chuàng)建目錄
# os.rename() 重命名目錄或文件
# os.path.exists() 判斷路徑是否存在
# upper() 全部轉(zhuǎn)換為大寫字母
# lower()? 全部轉(zhuǎn)換為小寫字母
# sys.stdout.write() 標(biāo)準(zhǔn)輸出打印
# sys.stdout.flush()刷新輸出?
# shutil.copy() 復(fù)制單個文件到另一文件或目錄
# write() 寫入文件內(nèi)容
# winsound.Beep() 打開電腦揚(yáng)聲器
# zfill() 在字符串前面填充0
三、循環(huán)語句
# break終止當(dāng)前循環(huán)
# continue 終止本循環(huán)進(jìn)入下一次循環(huán)
# with open() as file 以with語句打開文件(數(shù)據(jù)保存)
四、轉(zhuǎn)義字符
\ 行尾續(xù)行符
\' 單引號?
\'' 雙引號
\a 響鈴
\e 轉(zhuǎn)義
\n 換行
\t 橫向制表符
\f 換頁
\xyy 十六進(jìn)制yy代表的字符
\\反斜杠符號
\b 退格
\000 空
\v 縱向制表符
\r 回車
\0yy 八進(jìn)制yy代表的字符
\other 其他的字符以普通格式輸出
1.集合(set)是一個無序不重復(fù)元素的序列(意思是有重復(fù)的會自動刪除,每次打印元素的位置不一定)
2.基本功能是進(jìn)行成員關(guān)系測試和刪除重復(fù)元素
3.可以使用大括號 { } 或者 set() 函數(shù)創(chuàng)建集合,注意:創(chuàng)建一個空集合必須用 set() 而不是 { },因為 { } 是用來創(chuàng)建一個空字典
4.因為set存儲的是無序集合,所以我們沒法通過索引來訪問。訪問 set中的某個元素實際上就是判斷一個元素是否在set中。
1.創(chuàng)建集合
s=set()#創(chuàng)建一個空集合
s1={1,2,3,'a','python'}
2.刪除重復(fù)的元素
集合是一個無序不重復(fù)元素的序列(意思是有重復(fù)的會自動刪除,每次打印元素的位置不一定)
3.成員關(guān)系測試(檢測某個成員是否在集合中)
案例:從終端輸入5位數(shù),以空格隔開,把這5位數(shù)存入列表中,剔除重復(fù)的數(shù)據(jù),打印出來
#提示,列表轉(zhuǎn)集合,集合轉(zhuǎn)列表
a=input("請輸入5位數(shù)字:")
mylist=a.split()
print(mylist)
b=set(mylist)
c=list(b)
print(c)
4.集合常用操作
1.添加元素
2.刪除元素
3.刪除整個集合
4.獲取集合的長度
5.不支持改元素
集合操作-添加元素
格式:
集合.add(元素)
格式:
集合.update(元素)
區(qū)別:
add不能添加列表,update可以
update是將字符串中的拆分成字符進(jìn)行追加
add,是當(dāng)做整體追加在集合中
#案例:從終端輸入一個數(shù)字就加入集合中,然后打印,又輸入一個數(shù)字,然后打印,直到輸入-1,退出輸入
#然后打印最終的集合
ms=set()
while 1:
a=int(input("請輸入一個數(shù)字:"))
if a==-1:
break
ms.add(a)
print(ms)
print(ms)
#案例:從終端輸入一個字符串就加入集合中,然后打印,又輸入一個字符串,然后打印,直到輸入q,退出輸入
#然后打印最終的集合,字符串要分開存儲,如輸入hello,存儲的列表是{'h','e','l','0'}
ms=set()
while 1:
a=input("請輸入一個字符串:")
if a=='q':
break
ms.update(a)
print(ms)
print(ms)
集合操作-刪除元素及刪除整個集合
格式:
集合.remove(元素)? # 元素如果不存在會引發(fā)KeyError
集合.discard(元素)? # 元素如果不存在不發(fā)生任何事
集合.pop()? # 集合元素是字符串類型時刪除隨機(jī)元素。 集合元素是其他數(shù)據(jù)類型時,刪除左邊第一個元素
del 集合名 #刪除整個集合
#案例:有集合{1,2,3,'hello','world'},刪除全部字符串,然后最左邊第一個元素
a={1,2,3,'hello','world'}
a.discard("hello")
a.discard("world")
a.pop()
print(a)
集合操作-獲取集合的長度
格式:
len(集合名)
#案例:有集合{1,2,3,4,'hello','a'},保留1個元素,其他的刪除,假如元素個數(shù)不確定
s={1,2,3,4,'hello','a'}
for i? in range(len(s)-1):
s.pop()
print(s)
集合的集運(yùn)算
集合的交集,并集,差集,對稱差集的運(yùn)算
{1,2,3,4}交集{4,5,6,7} --4 ? 交集()
{1,2,3,4}并集{4,5,6,7} -1,2,3,4,5,6,7? 并集(|)
{1,2,3,4}差集{4,5,6,7} -1,2,3? 差集(-)
{1,2,3,4}對稱差集{4,5,6,7}-1,2,3,5,6,7 4同時出現(xiàn)在兩個集合中,不選它 對稱差集(^)
#案例:使用花括號和set創(chuàng)建各一個集合,然后對集合進(jìn)行交、并、差、對稱差運(yùn)算
s={1,2,3,4,5,6}
s1=set([6,7,8,9,10])
print(ss1)
print(s|s1)
print(s-s1)
print(s^s1)
集合分為兩種:可變集合(set)和不可變集合(frozenset),現(xiàn)在學(xué)習(xí)的是可變集合。
在Python中,有關(guān)于集合的操作主要有:集合的創(chuàng)建;集合的添加和刪除;集合的交、并和差集運(yùn)算。
今天先來學(xué)習(xí)如何創(chuàng)建集合。
集合的創(chuàng)建有兩種方法:直接賦值法和set()函數(shù)法。
1、直接賦值法
和Python的其它序列一樣,采用直接賦值法就可以直接創(chuàng)建一個集合,具體語法格式如下:
setname = {“element1”,“element2”,“element3”,……,“elementn”,}
從格式上看,和其它的序列創(chuàng)建方法基本一樣,就是集合名setname直接使用賦值運(yùn)算符等號“=”賦值,等號后面的元素內(nèi)容使用英文半角的大括號“{ }”括起來,各個元素之間依然使用英文半角的逗號“,”分隔。
這里雖然和字典一樣使用大括號“{ }”,但是只要記住字典的元素是由鍵值對組成的(詳見前第62節(jié)內(nèi)容),就完全可以區(qū)分所創(chuàng)建的是字典還是集合了。
一、創(chuàng)建集合
創(chuàng)建非空集合:集合中set括號中需要的參數(shù)的數(shù)據(jù)類型有:序列(包括字符串、列表、元組),字典可以轉(zhuǎn)為集合,注意數(shù)值類型不能作為集合的參數(shù),如int類型。
二、添加元素
add() 方法是將要添加的元素作為一個整體添加到集合中
update() 方法是把要傳入的元素拆分成單個字符,存于集合中,并去掉重復(fù)的
三、刪除元素
集合的刪除操作使用的方法跟列表是一樣的,使用的也是 remove 方法,只能單個刪除
四、遍歷集合
五、集合與字符串、列表、元組互轉(zhuǎn),集合轉(zhuǎn)字典
六、查找元素并刪除
函數(shù)原型: a.discard(b)
參數(shù)說明:a為一個set類型的變量;b表示要查找并刪除的元素
函數(shù)作用:在集合setVar中查找element元素,如果存在則刪除;如果沒找到,則什么也不做。該函數(shù)沒有返回值
七、pop用法
函數(shù)原型: set1.pop() ? ? 刪除并返回集合set1中的第一個元素,如果為空引發(fā)KeyError錯誤+
八、clear、copy和len的用法
clear ????方法用于清空集合中的所有元素
copy ????方法用于集合拷貝
len ????跟求序列的長度的函數(shù)len()是一樣的,返回的是集合中有多少個元素
九、求集合的交集、并集、差集和difference的用法
求集合的 交集 使用的符號是 “”
求集合的 并集 用的是符號 “|”
求集合的 差集 使用的符號是減號 “-”
difference? ? 等價于集合的差集 ,查看兩個集合的不同之處。這種不同指的是集合s1相對于集合s2,不同的地方,也就是所有在集合s1中,而不再集合s2中的的元素組成的新集合
十、運(yùn)算符判斷集合間關(guān)系和issuperset、issubset的用法
集合可以使用大于()、小于()、大于等于(=)、小于等于(=)、等于(==)、不等于(!=)來判斷某個集合是否完全包含于另一個集合,也可以使用子父集判斷函數(shù)。
issuperset ? ? 集合st1是否是集合st2的父集
issubset ? ??集合st1是否是集合st2的子集
十一、不可變集合frozenset的用法
frozenset ? ??該集合中的內(nèi)容是不可改變的,其他功能及操作跟可變集合set一樣
分享名稱:python集合常用函數(shù) python簡述集合的特性
分享路徑:http://chinadenli.net/article44/hihcee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、ChatGPT、營銷型網(wǎng)站建設(shè)、定制開發(fā)、App設(shè)計、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)