Python list、tuple、dict區別
阿新 • • 發佈:2018-09-16
允許 val 需要 圖片 類型 sts border out 做到
- 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 中。
其中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區別