Python容器淺析

1,容器介紹

2,列表

3,集合

4,字典

5,元組

 

零   Python容器的基本概念:

        python同php一樣嗎,是一門弱數據類型語言,也就是說,在Python中定義一個變量,他的數據類型是根據內容變化而變化的                           

        python就引入了“容器”這個概念;其中,容器是由“列表”“集合”“字典”“元組”四個基本模塊組成的,這一部分內容在python中是非常重要的部分,掌握好了這幾種數據結構在處理數據的時候就會很方便,但是前提條件是對這幾種數據結構的特性要很瞭解,因爲在實際編程中,最常見的工作就是將數據進行拆分和和合並,將其加工爲特定的形式,而數據結構就是這種利器,就會大大提高你的代碼效率和代碼算法以及代碼的可讀性。

 

 

壹   列表

列表是python中最常用的數據類型,可以吧Python中的列表想象成c語言中的數列

創建一個列表只需要在中括號內的用逗號吧不同的數據項分隔開來就可以了

通過下標從而訪問列表中的數據,和其他語言一樣,從 0 開始爲第一個

同一個列表中的數據項可以重複,而且可以爲不同的數據類型

通過直接賦值可以更新列表中的數據項的值:

 

查看列表中可以引用的方法

>>> dir(a)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

我們只看最後幾個沒有下劃線的方法:

 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'

在python中可以通過 help() 函數來查看幫助文檔,在學習技術這條路上學會查看英文文檔自學是一個事半功倍的方法:

在這裏我們看一下“append”方法的文檔:(python中引用方法的語法是 ‘ 內容.方法名稱 ’ )

Google翻譯:   這裏是說將該項數據項直接添加到列表的末尾上去;

       果然如此,看來幫助文檔沒有騙我們,值得信賴

 

既然學會看文檔了,那我就不一一都列舉文檔了,下面我就總結一下列表中的所有基本方法的使用說明和效果:

  • append        在尾部追加一個新的元素
  • clear            清空容器
  • copy            淺拷貝list,一定分別出拷貝和引用傳遞  若是直接賦值的方法類似於Linux中的軟鏈接,並不是拷貝了這個數據
    •   
  • count          統計元素在列表中的個數
  • index           查詢元素在列表中第一次出現的下標位置   若是如果列表中不存在該元素,則拋出異常
  • insert           制定要插入的元素的位置
  • pop              通過下標移除元素,會彈出被移除的數據項    默認沒有下標時刪除最後一個
  • remove        移除對應的元素    注意:如果列表中不存在該元素,則拋出異常
  • reverse        翻轉元素的順序
  • sort              排序(主要針對數字)    若是字符串的話則是根據ascii碼進行排序
  • extend         合併列表   等於a+b

 

 

貳   集合

集合(set)是一個無序的不重複元素序列

創建集合的時候可以用 { xx,yy,zz }或者是set()來創建;而不能直接使用{},大括號內必須夾帶數據,因爲直接的大括號使用來創建空字典的

 

查看集合中引用的方法:

>>> dir(a)
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

看最後幾個比較重要的基礎的:

 'add', 'clear', 'copy', 'difference',  'discard', 'intersection', 'pop', 'remove','union'

  • 'add'    在集合的最後添加一個元素
  • 'clear'    清空集合
  • 'copy'    複製該集合,硬鏈接
  • 'difference'  返回多個集合的補集  
  • 'discard'    刪除集合中的指定元素    若元素不存在則發生錯誤
  • 'intersection'    返回集合的交集
  • 'pop'    隨機移除元素
  • 'remove'    刪除集合中的指定元素    若元素不存不會發生錯誤
  • 'union'    返回兩個集合的並集

 

 

叄   字典

字典是另一種可變容器模型,且可存儲任意類型對象

字典的每個鍵值(key=>value一一對應)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中;

在字典中,鍵必須是唯一的,但值則不必;值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組

字典中不允許同一個鍵出現兩次;創建時如果同一個鍵被賦值兩次,後一個值會被記住,

創建字典:

訪問字典的元素:

更新元素:

 

字典中包含了以下三個內置函數:

  • len(dict)    計算字典元素個數,即鍵的總數。
  • str(dict)    輸出字典,以可打印的字符串表示。
  • type(variable)    返回輸入的變量類型,如果變量是字典就返回字典類型。

 

字典的迭代

第一種方式:
            for k in d2:
                print(k, d2[k])

        第二種方式:
            for key in d2.keys():
                print(k, d2[k])
        第三種方式:
            for k,v in d2.items():
                print(k, v)

 

查看字典中的方法:

>>> dir(a)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
>>>

去最後幾種常用的基礎方法:

'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

 

  • 'clear'   清空字典
  • 'copy'   複製字典
    • ​​​​​​​
  • 'fromkeys'    用於創建一個新字典,以序列 seq 中元素做字典的鍵,value 爲字典所有鍵對應的初始值​​​​
    • ​​​​​​​
  • 'get'    返回指定鍵的值   如果值不在字典中返回默認值
    • ​​​​​​​
  • 'items'    以列表返回可遍歷的(鍵, 值) 元組數組​​​​​​​
    • ​​​​​​​
  • 'keys'    以列表返回一個字典所有的鍵​​​​​​​
    • ​​​​​​​
  • 'pop'    刪除字典給定鍵 key 及對應的值,返回值爲被刪除的值​​​​​​​
    • ​​​​​​​
  • 'popitem'    刪除字典最後鍵 key 及對應的值,返回值爲被刪除的值
    • ​​​​​​​
  • 'setdefault'   和 get() 類似, 如果鍵不存在於字典中,將會添加鍵並將值設爲默認值
    • ​​​​​​​
  • 'update'    把字典參數 dict2 的 key/value(鍵/值) 對更新到字典 dict 裏​​​​​​​
    • ​​​​​​​
  • 'values'    以列表形式返回所有鍵的值
    • ​​​​​​​

 

 

肆   元組

Python的元組與列表類似,不同之處在於元組的元素不能修改;

  • 關於元組是不可變的:所謂元組的不可變指的是元組所指向的內存中的內容不可變

 

元組創建很簡單,只需要在小括號中添加元素,並使用逗號隔開即可;

  在變量命名中最好別使用tup來命名

 

元組中只包含一個元素時,需要在元素後面添加逗號,否則括號會被當作運算符使用;

訪問元組:    

 

元組中的元素值是不允許修改的,但我們可以對元組進行連接組合:

 

元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組

 

元組中的方法:

>>> dir(tup2)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

其中常用方法只有兩個:

  • 'count'    統計返回值出現的次數
  • 'index'    返回值的第一個索引。如果值不存在,則引發錯誤r​​​​​​
    • ​​​​​​​

 

 

 

 

 

優秀是一種加速度,而非速度

 

= =

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章