前言
在 Python 的眾多數(shù)據(jù)結(jié)構(gòu)中,集合(Sets)是一個(gè)引人注目且實(shí)用的概念。集合提供了一種存儲(chǔ)無(wú)順序、唯一元素的數(shù)據(jù)結(jié)構(gòu),它們不僅可以幫助我們高效處理數(shù)據(jù),還能應(yīng)用于各種算法和問(wèn)題。
本博客將帶您踏上一段關(guān)于 Python 集合的探索之旅。我們將深入了解集合的基本概念、使用方法和相關(guān)操作,了解集合與其他數(shù)據(jù)結(jié)構(gòu)的比較優(yōu)勢(shì),以及如何利用集合來(lái)解決實(shí)際問(wèn)題。
準(zhǔn)備好開(kāi)始探索 Python 集合的奇妙世界了嗎?讓我們一起深入了解集合的魅力,開(kāi)啟這段令人興奮的學(xué)習(xí)之旅吧!??????
什么是 python 集合
在Python中,集合是一個(gè)獨(dú)特的元素集合。換句話說(shuō),集合是無(wú)序的,元素們彼此之間不重復(fù)的容器。當(dāng)需要存儲(chǔ)多個(gè)項(xiàng)目,但不關(guān)心順序或重復(fù)時(shí),通??梢允褂眉?。Python集合可以包含不同類型(整數(shù),浮點(diǎn)數(shù),元組,字符串等)的不可變類型數(shù)據(jù),也就是說(shuō)集合中不能包含列表,因?yàn)榱斜硎强勺冾愋汀?/strong>
這是因?yàn)?,為了保證元素的唯一性,集合(set)內(nèi)部對(duì)元素的實(shí)現(xiàn)依賴于散列(hash)技術(shù)。散列技術(shù)要求元素必須是不可變的類型才能確保散列值不變,因此保持集合的正確運(yùn)行。列表由于是可變類型,所以不能哈?;?,也就不能被加入到集合中。
集合在Python中定義為在大括號(hào){}內(nèi)放置一個(gè)逗號(hào)分隔的列表。也可以通過(guò)調(diào)用內(nèi)置的 “set()” 函數(shù)從一些其他集合類型比如列表,元組構(gòu)建出一個(gè)集合。
set1 = {1,13.14,'zhangsan',(3,4,5)}
print(type(set1))
print(set1)
set2 = set('zhangsan')
print(type(set2))
print(set2)
這里我們可以發(fā)現(xiàn),輸出集合的順序跟我們定義集合的時(shí)候的順序是不同的,這也體現(xiàn)了集合的無(wú)序性。同時(shí)因?yàn)榧系臒o(wú)序性,集合不支持下標(biāo)操作。
set1 = {1,13.14,'zhangsan',(3,4,5)}
print(set1[0])
但是當(dāng)我們需要?jiǎng)?chuàng)建一個(gè)空集合的時(shí)候,我們不能 set1 = {}
,因?yàn)檫@種方式是我們用來(lái)創(chuàng)建空字典的方式。如果我們想要?jiǎng)?chuàng)建空字典,需使用 set1 = set()
函數(shù)。
set1 = {}
print(type(set1))
set2 = set()
print(type(set2))
print(set2)
集合具有去重性
set1 = {1,2,10,10,20,20}
print(set1)
集合的特性
- 集合具有無(wú)序性,不支持下標(biāo)操作。
- 集合具有去重性,可以自動(dòng)去除掉重復(fù)的數(shù)據(jù)。
集合常見(jiàn)的操作
1)增加數(shù)據(jù)
?????? 1.add()
add函數(shù)可以增加單個(gè)數(shù)據(jù),也可以增加序列。
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.add(80)
print(set1)
set1.add(('wangwu','zhaoliu'))
print(set1)
?? 2.update()
update 增加數(shù)據(jù)只能增加序列,而不能增加單個(gè)數(shù)據(jù)。
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.update(1)
print(set1)
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.update((20,60))
print(set1)
update與add函數(shù)不同的是,add函數(shù)可以增加單個(gè)數(shù)據(jù)以及序列,而update函數(shù)只允許增加序列,并且add增加序列會(huì)將整個(gè)序列當(dāng)成一個(gè)數(shù)據(jù),而update增加序列,會(huì)將序列里的數(shù)據(jù)拆分成單個(gè)數(shù)據(jù)加入集合中。
2)刪除數(shù)據(jù)
?? 1.remove()
remove函數(shù)刪除指定的數(shù)據(jù),但是如果集合中不含該數(shù)據(jù),那么就會(huì)報(bào)錯(cuò)。
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.remove('zhangsan')
print(set1)
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.remove('lisi')
?? 2.discard()
discard刪除指定的數(shù)據(jù),如果集合中不存在也不會(huì)報(bào)錯(cuò)。
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.discard('zhangsan')
print(set1)
set1.discard('lisi')
?? 3.pop()
pop隨機(jī)刪除集合中的數(shù)據(jù),并且返回這個(gè)數(shù)據(jù)。
set1 = {1,13.14,'zhangsan',(3,4,5)}
tmp = set1.pop()
print(set1)
print(tmp)
再次運(yùn)行。
3)查找數(shù)據(jù)
in 查找數(shù)據(jù)是否在集合中,如果在則返回True,不存在返回Fasle。
not in 查找數(shù)據(jù)是否不在結(jié)合中,如果不存在返回True,存在返回False。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-531919.html
set1 = {1,13.14,'zhangsan',(3,4,5)}
print('zhangsan' in set1)
print('lisi' in set1)
print('zhangsan' not in set1)
print('lisi' not in set1)
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-531919.html
到了這里,關(guān)于Python 集合探索:解密高效數(shù)據(jù)操作和快速算法的奇妙世界的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!