Python重要數(shù)據(jù)結(jié)構(gòu)之list, tuple, dict, set

List

  1. 創(chuàng)建方法:

    使用方括號[ ]創(chuàng)建一個list

    L = []
    L = ['a','b','c']
    
  1. 有序性:有序

  2. 可更改性:可更改

  3. 元素唯一性:可重復(fù)

  4. 訪問方式:

    1. 讀取/更改:

      List按照數(shù)字索引訪問內(nèi)容汉嗽,起始索引為0不要越界

      print L[0]
      L[1] = 'string1'
      

      List可以使用負(fù)數(shù)索引完成倒序訪問衅疙,起始索引為-1不要越界

      print L[-1]
      
    2. 添加/刪除

      使用append方法可以向list末尾添加一個新元素辕棚;使用pop方法元素讀出list末尾一個元素并將其刪除蛹批,為pop方法指定索引號可讀出并刪除指定元素

      L.append("one more element")
      the_last_element = L.pop()
      the_third_element = L.pop(2)  //索引號起始為0
      

      使用insert方法向list的任意位置添加一個新元素, 第參數(shù)為索引號陈惰,第個是新元素武翎;

      L.insert(2,'a new element')
      
    3. 進(jìn)階操作

    切片(獲取list中的一部分內(nèi)容生成新的list)

    使用L[起始索引:終止索引]來生成一個從起始索引開始(包括起始索引)到終止索引(不包括終止索引)的list, 可以使用負(fù)數(shù)進(jìn)行倒序索引

    第一個索引值缺省表示從第一個元素開始取佣盒,第二個索引值缺省表示取到最后一個元素

    還可以使用L[起始索引:終止索引:間隔n]每n個數(shù)的元素取一個偿荷,即每隔n-1個元素取一個

    L = ['a','b','c','e']
    new_L = L[1:3]    //這時new_L包括a,b,c三個元素(索引從0開始)
    new_L = L[-4:-2]//這時new_L包括a,b兩個元素
    new_L = L[:2] //這時new_L包括a,b,c三個元素
    new_L = L[:]  //相當(dāng)于復(fù)制了一個L枝誊,new_L和L的改動互不影響
    new_L = L     //這樣的話况芒,new_L與L表示同一個list的兩個名稱,任何一個改動另外一個也變化
    new_L = L[::2]    //這時new_L包括a,c兩個元素
    

    ps字符串也可以進(jìn)行類似list的切片操作绝骚,將每一個字符視為一個元素,按照list的方式操作即可


Tuple

  1. 創(chuàng)建方法

    使用小括號( )創(chuàng)建一個tuple

    T = ()   //空tuple是無意義的皮壁,因為tuple一旦創(chuàng)建就不能修改了
    T = ('a','b','c')
    T = (1,) //只含一個整數(shù)的tuple在創(chuàng)建時需要加一個逗號以同普通整數(shù)區(qū)分(因為小括號可以是運算符)
    
  2. 有序性:有序

  3. 可更改性:不可更改

  4. 元素唯一性:可重復(fù)

  5. 訪問方式:

    1. 讀取

      訪問方式同list,可以使用數(shù)字正序或者倒序索引哪审,但其內(nèi)容不可更改蛾魄,但如果使用list作為tuple的元素,則可以通過更改list變相的改變tuple

      print T[2]    //  使用小括號創(chuàng)建湿滓,但仍然使用中括號索引
      T = ('a','b',[])
      

Dict

  1. 創(chuàng)建方法

    使用大括號來創(chuàng)建一個dict

    D = {
      'first':'a',   //  dict以“索引:值”的方式創(chuàng)建滴须,即key:value
      'second':'b',
      'third':'c'
    }
    
  2. 有序性:無序

  3. 可更改性:可更改

  4. 元素唯一性:value可重復(fù), key唯一且不能為可變類型如list

  5. 訪問方式

    1. 讀取/更改

      使用key來索引訪問,類似于list (訪問到不存在的key會報錯)叽奥;

      使用in操作符可以判斷key是否存在

      使用get方法通過key訪問(key不存在時返回None

      不存在的key做索引給dict賦值可以增加新元素扔水,存在的key做索引給dict賦值會更新key對應(yīng)的value

      print D['first']
      
      if 'first' in D:
        print D['first']
       
      print D.get('first')
      
      D['fourth'] = 'new_element'
      D['first'] = 'change_element'
      

set

  1. 使用set()創(chuàng)建一個set,傳入一個list作為參數(shù)可以用list中的值初始化set

    S = set()
    S = set(['a','b','c'])
    
  2. 有序性:無序

  3. 可更改性:可更改

  4. 元素唯一性:元素唯一朝氓,且元素不能為可變類型如list

  5. 訪問方式

    1. 讀取

      因為set無序所以不能使用數(shù)字索引來取出特定元素魔市,使用in運算符可以判斷一個元素是否在set

      使用add方法可將一個元素添加到set中

      使用pop方法從set中取出一個元素并從set中刪除

      if 'a' in S
        print "a在S中"
        
      S.add('d')
      
      print S.pop
      

      ps:set的元素?zé)o序主届,因此不能確定pop出的元素是哪一個


總結(jié)

? Listtuple在內(nèi)存中以數(shù)組方式組織,查找效率不如dict和set高待德,但占用空間少君丁;Dictset在內(nèi)存中以哈希表方式組織查找效率很高,但占用內(nèi)存空間較大将宪。

? 四種數(shù)據(jù)類型都能夠存放各種類型的元素绘闷,且不需要儲存的元素類型相同。需要注意的是较坛,dict索引(key)set中的元素不能為可變的數(shù)據(jù)類型印蔗,如list。

? Listtuple可以使用數(shù)字索引來正序或者倒序的訪問丑勤,但tuple的元素個數(shù)和名稱等是不可改變的华嘹,可以把List作為tuple的元素來變相的是tuple能夠改變。

? set可以用于去重復(fù)确封,但無法訪問其中的特定元素除呵,dict可以通過索引(key)來訪問其中的元素,也可通過get方法來訪問爪喘,使用in運算符颜曾,可以判斷一個元素在不在set中或者判斷在不在dict的key中。

? 使用 for 變量 in list/tuple/dict/set 可以遍歷這些結(jié)構(gòu)中的值秉剑,注意泛豪,但遍歷dict時for中的變量取出的是dict的key,需要通過key讀出value

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侦鹏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子略水,更是在濱河造成了極大的恐慌价卤,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渊涝,死亡現(xiàn)場離奇詭異慎璧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)跨释,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岁疼,“玉大人缆娃,你說我怎么就攤上這事瑰排⌒谆铮” “怎么了它碎?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵扳肛,是天一觀的道長乘碑。 經(jīng)常有香客問我,道長兽肤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮笤休,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘政基。我一直安慰自己闹啦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布荐健。 她就那樣靜靜地躺著摧扇,像睡著了一般挚歧。 火紅的嫁衣襯著肌膚如雪滑负。 梳的紋絲不亂的頭發(fā)上用含,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音瘟斜,去河邊找鬼。 笑死螺句,一個胖子當(dāng)著我的面吹牛蛇尚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播匆笤,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼炮捧,長吁一口氣:“原來是場噩夢啊……” “哼虾标!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起傀蚌,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤善炫,失蹤者是張志新(化名)和其女友劉穎箩艺,沒想到半個月后艺谆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體静汤,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡虫给,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缠黍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓷式。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡谷暮,死狀恐怖湿弦,靈堂內(nèi)的尸體忽然破棺而出颊埃,到底是詐尸還是另有隱情班利,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布闯割,位于F島的核電站,受9級特大地震影響谢澈,放射性物質(zhì)發(fā)生泄漏锥忿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一瑞你、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧砌创,春花似錦刽辙、人聲如沸甲献。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镊尺,卻和暖如春吕粗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背议泵。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留厢汹,地道東北人烫葬。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓划栓,卻偏偏與公主長得像兑巾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子忠荞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一蒋歌、python 變量和數(shù)據(jù)類型 1.整數(shù) Python可以處理任意大小的整數(shù),當(dāng)然包括負(fù)整數(shù)钻洒,在Python程序...
    績重KF閱讀 1,658評論 0 1
  • 最近在慕課網(wǎng)學(xué)習(xí)廖雪峰老師的Python進(jìn)階課程奋姿,做筆記總結(jié)一下重點。 基本變量及其類型 變量 在Python中萍悴,...
    victorsungo閱讀 1,667評論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)赏淌,斷路器掷贾,智...
    卡卡羅2017閱讀 134,626評論 18 139
  • Python 是一種相當(dāng)高級的語言泞边,通過 Python 解釋器把符合語法的程序代碼轉(zhuǎn)換成 CPU 能夠執(zhí)行的機(jī)器碼...
    Python程序媛閱讀 1,892評論 0 3
  • 此刻嗡午,秋后根須分娩綠芽簇?fù)碇裤逶∏镉曛衅疵L 來年,春初繁葉凋零落滿枝頭根須佇立春風(fēng)中一片蕭索 來自2020號...
    河島閱讀 166評論 0 1