1. 程式人生 > >Python list、tuple、dict區別

Python list、tuple、dict區別

允許 val 需要 圖片 類型 sts border out 做到

  1. Dictionary 是 Python 的內置數據類型之一, 它定義了鍵和值之間一對一的關系。
  2. 每一個元素都是一個 key-value 對, 整個元素集合用大括號括起來
  3. 您可以通過 key 來引用其值, 但是不能通過值獲取 key
  4. 在一個 dictionary 中不能有重復的 key。給一個存在的 key 賦值會覆蓋原有的值。在任何時候都可以加入新的 key-value 對。這種語法同修改存在的值是一樣的。
  5. 當使用 dictionary 時, 您需要知道: dictionary 的 key 是大小寫敏感的
  6. Dictionary 不只是用於存儲字符串。Dictionary 的值可以是任意數據類型, 包括字符串, 整數, 對象, 甚至其它的 dictionary。在單個 dictionary 裏, dictionary 的值並不需要全都是同一數據類型, 可以根據需要混用和匹配。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]。 技術分享圖片如果負數索引使您感到糊塗, 可以這樣理解: 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 的兩個方法 extendappend 看起來類似, 但實際上完全不同。 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 沒有方法:沒有 appendextend 方法、沒有 removepop 方法、沒有 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()也不會變成一個真正的元組.雖然前後兩個對象有相同的數據集合,但是變量指向的不是同一個對象.需要註意的是:它們的所有值相同,一個列表也不可能"等於"一個元組的.

Python list、tuple、dict區別