Python list、tuple、dict區別


  1. Dictionary 是 Python 的內置數據類型之一, 它定義了鍵和值之間一對一的關系。
  2. 每一個元素都是一個 key-value 對, 整個元素集合用大括號括起來
  3. 您可以通過 key 來引用其值, 但是不能通過值獲取 key
  4. 在一個 dictionary 中不能有重復的 key。給一個存在的 key 賦值會覆蓋原有的值。 2 在任何時候都可以加入新的 key-value 對。這種語法同修改存在的值是一樣的。
  5. 當使用 dictionary 時, 您需要知道: dictionary 的 key 是大小寫敏感的
  6. Dictionary 不只是用於存儲字符串。Dictionary 的值可以是任意數據類型, 包括字符串, 整數, 對象, 甚至其它的 dictionary。在單個 dictionary 里, dictionary 的值並不需要全都是同一數據類型, 可以根據需要混用和匹配。 2 Dictionary 的 key 要嚴格多了, 但是它們可以是字符串, 整數和幾種其它的類型 (后面還會談到這一點) 。也可以在一個 dictionary 中混用和配匹 key 的數據類型
  7. del 允許您使用 key 從一個 dictionary 中刪除獨立的元素。
  8. clear 從一個 dictionary 中清除所有元素。注意空的大括號集合表示一個沒有元素的 dictionary。

 

  1. list是一個使用方括號括起來的有序元素集合。
  2. List 可以作為以 0 下標開始的數組。任何一個非空 list 的第一個元素總是 li[0]
  3. 負數索引從 list 的尾部開始向前計數來存取元素。任何一個非空的 list 最后一個元素總是 li[-1]。 2如果負數索引使您感到糊塗, 可以這樣理解: li[-n] == li[len(li) - n]。 所以在這個 list 里, li[-3] == li[5 - 3] == li[2]
  4. 您可以通過指定 2 個索引得到 list 的子集, 叫做一個 “slice” 。返回值是一個新的 list, 它包含了 list 中按順序從第一個 slice 索引 (這里為 li[1]) 開始, 直到但是不包括第二個 slice 索引 (這里為li[3]) 的所有元素。
  5. 如果將兩個分片索引全部省略, 這將包括 list 的所有元素。但是與原始的名為 li 的 list 不同, 它是一個新 list, 恰好擁有與 li 一樣的全部元素。li[:] 是生成一個 list 完全拷貝的一個簡寫。
  6.  append 向 list 的末尾追加單個元素。
  7. insert 將單個元素插入到 list 中。數值參數是插入點的索引。請注意, list 中的元素不必唯一, 有有兩個獨立的元素具有 'new' 這個相同的值
  8.  extend 用來連接 list。請注意不要使用多個參數來調用 extend, 要使用一個 list 參數進行調用。
  9. Lists 的兩個方法 extend 和 append 看起來類似, 但實際上完全不同。 extend 接受一個參數, 這個參數總是一個 list, 並且添加這個 list 中的每個元素到原 list 中
  10. 另一方面, append 接受一個參數, 這個參數可以是任何數據類型, 並且簡單地追加到 list 的尾部。 在這里使用一個含有 3 個元素的 list 參數調用 append 方法。
  11. index 在 list 中查找一個值的首次出現並返回索引值。
  12. 要測試一個值是否在 list 內, 使用 in, 如果值存在, 它返回 True, 否則返為 False 。
  13. remove 從 list 中刪除一個值的首次出現。
  14. pop 是一個有趣的東西。它會做兩件事: 刪除 list 的最后一個元素, 然后返回刪除元素的值。請注意, 這與 li[-1] 不同, 后者返回一個值但不改變 list 本身。也不同於 li.remove(value), 后者改變 list 但並不返回值。
  15. Lists 也可以用 + 運算符連接起來。 list = list + otherlist 相當於 list.extend(otherlist)。 但 +運算符把一個新 (連接后) 的 list 作為值返回, 而 extend 只修改存在的 list。 也就是說, 對於大型 list 來說, extend 的執行速度要快一些。
  16.  Python 支持 += 運算符。 li += ['two'] 等同於 li.extend(['two'])。 += 運算符可用於 list, 字符串和整數, 並且它也可以被重載用於用戶自定義的類中。
  17. * 運算符可以作為一個重復器作用於 list。 li = [1, 2] * 3 等同於 li = [1, 2] + [1, 2] + [1, 2], 即將三個 list 連接成一個。

  1.     Tuple是不可變的list.一是創建了一個tuple就不能以任何方式改變它.
  2.     定義tuple與定義list的方式相同,除了整個元素集是用小括號包圍的而不是方括號.
  3.   Tuple的元素與list一樣按定義的次序進行排序.Tuples的索引與list一樣從0開始,所以一個非空的tuple的第一個元素總是t[0].
  4.     負數索引與 list 一樣從 tuple 的尾部開始計數。
  5.     與 list 一樣分片 (slice) 也可以使用。注意當分割一個 list 時, 會得到一個新的 list ;當分割一個 tuple 時, 會得到一個新的 tuple。
  6.     Tuple 沒有方法:沒有 append 或 extend 方法、沒有 remove 或 pop 方法、沒有 index 方法、可以使用 in 來查看一個元素是否存在於 tuple 中。

   其中list()函數與tuple()函數接受可撫今迭代的對象(比如一個序列)作為參數,並通過淺拷貝數據來創建一個新的列表與元組.雖然字符串也是序列類型,但一般它們不用於list()與tuple().更多的情況下,它們用於在兩種類型之間進行軒換,比如你需要把一個已有的元組轉換成列表類型(然后你可以修改它的元素),反之也是.

     alist=['123','456'];

     atuple=tuple(alist);

     print atuple 

     >>>('123', '456')

    alist==atuple

    >>> False

    alist2=list(atuple)

   alist2==alist

   >>>True

   alist is alist2

   >>>False

   再說id()確認一下, [id(x)  for x in alist,atuple,alist2]

    >>>[10903800,12003900,11730280]

    所以無論是list()還是tuple()都不可能做到完全轉換,也就是說傳遞一個元組到list不會變成真正的列表,同時傳遞一個列表到tuple()也不會變成一個真正的元組.雖然前后兩個對象有相同的數據集合,但是變量指向的不是同一個對象.需要注意的是:它們的所有值相同,一個列表也不可能"等於"一個元組的.

  

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM