溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python數(shù)據(jù)類型在常見(jiàn)集合中的語(yǔ)法有哪些

發(fā)布時(shí)間:2021-10-28 16:33:23 來(lái)源:億速云 閱讀:102 作者:柒染 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)Python數(shù)據(jù)類型在常見(jiàn)集合中的語(yǔ)法有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

Python數(shù)據(jù)類型中的set和C#中的集合(collection)不是一個(gè)概念,這是翻譯的問(wèn)題。

Python中的集合是指無(wú)序的、不重復(fù)的元素集,類似數(shù)學(xué)中的集合概念,可對(duì)其進(jìn)行交、并、差、補(bǔ)等邏輯運(yùn)算。

常見(jiàn)集合的語(yǔ)法為:

s = set(['a', 'b', 'c'])

不過(guò)set在Python 3.0中發(fā)生了較大的變化,創(chuàng)建一個(gè)集合的語(yǔ)法變成了:s = {1,2,3},用花括弧的方法,與后邊要提到的dict類似。

如果在set中傳入重復(fù)元素,集合會(huì)自動(dòng)將其合并。這個(gè)特性非常有用,比如去除列表里大量的重復(fù)元素,用set解決效率很高,示例如下:

# -*- coding: utf-8 -*-  a = [11,22,33,44,11,22,11,11,22,22,33,33,33]  b = set(a)  print b  #輸出 set([33, 11, 44, 22])

另一個(gè)例子,找出兩個(gè)list里面相同的元素(集合求交,其它類推),代碼如下:

# -*- coding: utf-8 -*-  a = ["11","22","33"]  b = ["11","33"]  c = set(a)&set(b)  print c  #輸出 set(['11', '33'])

想想你如果自己實(shí)現(xiàn)這個(gè)算法會(huì)怎么寫(xiě)?然后可以找兩個(gè)大一點(diǎn)的列表,比比和set實(shí)現(xiàn)的效率,你就會(huì)有體會(huì)了。以后在程序里多用set吧。
目前C#的Collections中好像還沒(méi)有Set,但是C++ STL里是有的,不知道C#為什么不實(shí)現(xiàn)這個(gè)有趣的東西。

字典(dict)

用過(guò)C#中Collections的人對(duì)Hashtable應(yīng)該不會(huì)陌生,Python數(shù)據(jù)類型里的哈希表就是字典(dict)了。與set類似,字典是一種無(wú)序存儲(chǔ)結(jié)構(gòu),它包括關(guān)鍵字(key)和關(guān)鍵字對(duì)應(yīng)的值(value)。

C#程序員需要了解的就是,在Python中dict是一種內(nèi)置的數(shù)據(jù)類型,定義方式為:dictionary = {key:value},當(dāng)有多個(gè)鍵值對(duì)時(shí),使用逗號(hào)進(jìn)行分割。

字典里的關(guān)鍵字為不可變類型,如字符串、整數(shù)、只包含不可變對(duì)象的元組,列表等不能作為關(guān)鍵字。字典中一個(gè)鍵只能與一個(gè)值關(guān)聯(lián),對(duì)于同一個(gè)鍵,后添加的值會(huì)覆蓋之前的值。

學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)的人對(duì)字典的散列查找效率應(yīng)該都有認(rèn)識(shí),所以我建議在可能的情況下盡量多用字典,其它的就不多寫(xiě)了。

關(guān)于Python數(shù)據(jù)類型在常見(jiàn)集合中的語(yǔ)法有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI