Python可變集合和不可變集合的構(gòu)造方法大全
?Python集合又是一種新的數(shù)據(jù)類型,集合有兩種形式:可變集合(set())和不可變集合(frozenset())兩種,這兩種集合操作方法比較類似,但是在底層性質(zhì)上有截然想法的區(qū)別。集合是一種無序的,不重復(fù)且不可隨機(jī)訪問的元素集合,在概念和運(yùn)算上和數(shù)學(xué)中的集合類似,集合分為可變和不可變兩種。
一、對比數(shù)據(jù)類型
下面是我們學(xué)習(xí)過的一些數(shù)據(jù)類型,下面的注釋是對比這些數(shù)據(jù)類型的結(jié)果,供學(xué)習(xí)集合前的參考。
str1 = 'pythonpython' # 不可變,有序:可以通過下標(biāo)訪問 list1 = [1, 2, 3, 2] # 可變,有序:可以通過下標(biāo)訪問 tup1 = (1, 2, 3, 2) # 不可變,有序:可以通過下標(biāo)訪問 dict1 = {'name': 'Tom', 'age': 18, 'love': 'python'} # 可變,無序:但可以通過鍵訪問
二、可變集合構(gòu)造方法
1.直接構(gòu)造
set2 = {'name', 19, 'python'} print(set2, type(set2))
返回結(jié)果:
{19, 'python', 'name'} <class 'set'>
2.使用函數(shù)構(gòu)造
str1 = 'pythonpython' list1 = [1, 2, 3, 2] tup1 = (1, 2, 3, 2) dict1 = {'name': 'Tom', 'age': 18, 'love': 'python'} set3 = set(str1) print(set3, type(set3)) set4 = set(list1) print(set4, type(set4)) set5 = set(tup1) print(set5, type(set5)) set6 = set(dict1) print(set6, type(set6))
返回結(jié)果:
{'t', 'n', 'p', 'o', 'h', 'y'} <class 'set'>
{1, 2, 3} <class 'set'>
{1, 2, 3} <class 'set'>
{'love', 'name', 'age'} <class 'set'>
3.使用推導(dǎo)式構(gòu)造集合
set7 = set(i for i in range(1, 5)) print(set7, type(set7)) set8 = {i for i in list1} print(set8, type(set8)) set8 = {i for i in tup1} print(set8, type(set8))
返回結(jié)果:
{1, 2, 3, 4} <class 'set'>
{1, 2, 3} <class 'set'>
{1, 2, 3} <class 'set'>
三、不可變集合的構(gòu)造方法
不可變集合構(gòu)造(與可變集合類似,把set改為frozenset即可)。
1.使用frozenset()函數(shù)構(gòu)造
set3 = frozenset(str1) print(set3, type(set3)) set4 = frozenset(list1) print(set4, type(set4)) set5 = frozenset(tup1) print(set5, type(set5)) set6 = frozenset(dict1) print(set6, type(set6)) frozenset({'p', 'n', 't', 'h', 'y', 'o'}) <class 'frozenset'> frozenset({1, 2, 3}) <class 'frozenset'> frozenset({1, 2, 3}) <class 'frozenset'> frozenset({'name', 'age', 'love'}) <class 'frozenset'>
2.推導(dǎo)式構(gòu)造
set7 = frozenset(i for i in range(1, 5)) print(set7, type(set7))
返回結(jié)果:
frozenset({1, 2, 3, 4}) <class 'frozenset'>
四、集合構(gòu)造注意事項(xiàng)
1.集合不能想其他數(shù)據(jù)集一樣使用特有的符號來構(gòu)造,集合使用的語法符號是{},和字典是一樣的,這時(shí)候直接使用{}來構(gòu)造的,系統(tǒng)無法判斷數(shù)據(jù)類型是字典還是集合,會默認(rèn)為集合。
set9 = {} print(type(set9)) # 默認(rèn)為字典:<class 'dict'>
正確的方法只有使用構(gòu)造函數(shù)來實(shí)現(xiàn)了。
set9 = set() set99 = frozenset()
2.集合中不能包含字典和列表這樣的可變類型元素
set10 = {'name', 19, [1, 2, 3, 2]}
列表不可哈希:TypeError: unhashable type: 'list'
到此這篇關(guān)于Python可變集合和不可變集合的構(gòu)造方法大全的文章就介紹到這了,更多相關(guān)Python可變集合和不可變集合內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python學(xué)習(xí)筆記之錯(cuò)誤和異常及訪問錯(cuò)誤消息詳解
這篇文章主要介紹了Python學(xué)習(xí)筆記之錯(cuò)誤和異常及訪問錯(cuò)誤消息,結(jié)合實(shí)例形式分析了Python錯(cuò)誤和異常及訪問錯(cuò)誤消息try...except語句相關(guān)使用技巧,需要的朋友可以參考下2019-08-08在多種情況/開發(fā)環(huán)境中運(yùn)行python腳本和代碼的技巧分享
Python腳本或程序是包含可執(zhí)行Python代碼的文件,能夠運(yùn)行Python腳本和代碼可能是您作為Python開發(fā)人員所需的最重要的技能,在本教程中,您將學(xué)習(xí)一些運(yùn)行Python腳本和代碼的技術(shù),在每種情況下使用的技術(shù)將取決于您的環(huán)境、平臺、需求和技能2023-11-11Python爬蟲實(shí)現(xiàn)“盜取”微信好友信息的方法分析
這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)“盜取”微信好友信息的方法,結(jié)合實(shí)例形式分析了Python針對微信數(shù)據(jù)信息爬取的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09python sys.stdin和sys.stdout的用法說明
這篇文章主要介紹了python sys.stdin和sys.stdout的用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03python3實(shí)現(xiàn)TCP協(xié)議的簡單服務(wù)器和客戶端案例(分享)
下面小編就為大家?guī)硪黄猵ython3實(shí)現(xiàn)TCP協(xié)議的簡單服務(wù)器和客戶端案例(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06Python時(shí)間戳與時(shí)間字符串互相轉(zhuǎn)換實(shí)例代碼
這篇文章主要介紹了Python時(shí)間戳與時(shí)間字符串互相轉(zhuǎn)換實(shí)例代碼,大家參考使用2013-11-11python目標(biāo)檢測數(shù)據(jù)增強(qiáng)的代碼參數(shù)解讀及應(yīng)用
這篇文章主要為大家介紹了python目標(biāo)檢測數(shù)據(jù)增強(qiáng)的代碼參數(shù)解讀及應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05opencv-python 開發(fā)環(huán)境的安裝、配置教程詳解
這篇文章主要介紹了opencv-python 開發(fā)環(huán)境的安裝、配置,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09python獲取http請求響應(yīng)頭headers中的數(shù)據(jù)的示例
這篇文章主要介紹了python獲取http請求響應(yīng)頭headers中的數(shù)據(jù),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02