Python中list、tuple、dict區別
(2010-11-02 22:35:54)
Dictionary 是 Python 的內建資料類型之一,它定義了鍵和值之間一對一的關係。(用花括弧)
- 每一個元素都是一個 key-value 對, 整個元素集合用大括弧括起來
- 您可以通過 key 來引用其值, 但是不能通過值擷取 key
- 在一個 dictionary 中不能有重複的 key。給一個存在的 key 賦值會覆蓋原有的值。 在任何時候都可以加入新的key-value 對。這種文法同修改存在的值是一樣的。
- 當使用 dictionary 時, 您需要知道: dictionary 的 key 是大小寫敏感的
- Dictionary 不只是用於儲存字串。Dictionary 的值可以是任意資料類型, 包括字串, 整數, 對象,甚至其它的 dictionary。在單個 dictionary 裡, dictionary 的值並不需要全都是同一資料類型,可以根據需要混用和匹配。
Dictionary 的 key要嚴格多了, 但是它們可以是字串, 整數和幾種其它的類型 (後面還會談到這一點) 。也可以在一個 dictionary
中混用和配匹key 的資料類型
- del 允許您使用 key 從一個 dictionary 中刪除獨立的元素。
- clear 從一個 dictionary 中清除所有元素。注意空的花括弧{}集合表示一個沒有元素的dictionary。
- list是一個使用方括弧括起來的有序元素集合。
- List 可以作為以 0 下標開始的數組。任何一個非空 list 的第一個元素總是 li[0]
- 負數索引從 list 的尾部開始向前計數來存取元素。任何一個非空的 list 最後一個元素總是li[-1]。
如果負數索引使您感到糊塗,可以這樣理解:
li[-n] == li[len(li) - n]。 所以在這個 list 裡,li[-3] == li[5 - 3] == li[2]。
- 您可以通過指定 2 個索引得到 list 的子集, 叫做一個 “slice”。傳回值是一個新的 list, 它包含了 list 中按順序從第一個 slice 索引 (這裡為 li[1]) 開始,直到但是不包括第二個 slice 索引 (這裡為
li[3]) 的所有元素。
- 如果將兩個分區索引全部省略, 這將包括 list 的所有元素。但是與原始的名為 li 的 list 不同,它是一個新 list, 恰好擁有與
li 一樣的全部元素。li[:] 是產生一個 list完全拷貝的一個簡寫。
- append 向 list的末尾追加單個元素。
- insert 將單個元素插入到 list 中。數值參數是插入點的索引。請注意, list 中的元素不必唯一,有有兩個獨立的元素具有
'new' 這個相同的值。
- extend 用來串連 list。請注意不要使用多個參數來調用extend, 要使用一個 list 參數進行調用。
- Lists 的兩個方法 extend 和 append 看起來類似, 但實際上完全不同。extend 接受一個參數, 這個參數總是一個 list, 並且添加這個 list 中的每個元素到原 list中
- 另一方面, append 接受一個參數, 這個參數可以是任何資料類型, 並且簡單地追加到 list 的尾部。在這裡使用一個含有 3 個元素的 list 參數調用
append 方法。
- index 在 list 中尋找一個值的首次出現並返回索引值。
- 要測試一個值是否在 list 內, 使用 in, 如果值存在, 它返回
True,否則返為 False 。
- remove 從 list 中刪除一個值的首次出現。
- pop 是一個有趣的東西。它會做兩件事: 刪除 list 的最後一個元素, 然後返回刪除元素的值。請注意,這與
li[-1] 不同, 後者返回一個值但不改變 list 本身。也不同於li.remove(value), 後者改變 list 但並不傳回值。
- Lists 也可以用 + 運算子串連起來。 list =
list + otherlist 相當於list.extend(otherlist)。 但
+ 運算子把一個新(串連後) 的 list 作為值返回, 而 extend 只修改存在的 list。 也就是說, 對於大型 list來說,
extend 的執行速度要快一些。
- Python 支援
+= 運算子。li += ['two'] 等同於 li.extend(['two'])。 +=運算子可用於 list, 字串和整數, 並且它也可以被重載用於使用者自訂的類中。
- * 運算子可以作為一個重複器作用於 list。 li = [1, 2] * 3 等同於li = [1, 2] + [1, 2] + [1, 2], 即將三個 list 串連成一個。
- Tuple 是不可變 list。 一旦建立了一個 tuple 就不能以任何方式改變它。
- 定義 tuple 與定義 list 的方式相同, 除了整個元素集是用小括弧包圍的而不是方括弧。
- Tuple 的元素與 list 一樣按定義的次序進行排序。 Tuples 的索引與list 一樣從 0 開始, 所以一個非空 tuple 的第一個元素總是
t[0]。
- 負數索引與 list 一樣從 tuple 的尾部開始計數。
- 與 list 一樣分區 (slice) 也可以使用。注意當分割一個 list 時,會得到一個新的 list ;當分割一個 tuple 時, 會得到一個新的 tuple。
- Tuple 沒有方法:沒有append 或
extend 方法、沒有remove 或
pop 方法、沒有index 方法、可以使用in 來查看一個元素是否存在於 tuple 中。