列表和元組之間有什麼區別?

有什麼不一樣? 函數

元組/列表的優勢/缺點是什麼? spa


#1樓

列表用於循環,元組用於結構,即"%s %s" %tuplecode

列表一般是同質的,元組一般是異類的。 對象

列表用於可變長度,元組用於固定長度。 排序


#2樓

list的值能夠隨時更改,可是元組的值不能更改。 內存

優缺點取決於用途。 若是您擁有從未更改過的數據,則必須使用元組,不然list是最佳選擇。 get


#3樓

有人提到 ,差別主要是語義上的:人們指望元組和列表表示不一樣的信息。 但這遠遠超出了指導原則。 有些庫實際上根據傳遞的內容而有所不一樣。 以NumPy爲例(從我要求更多示例的另外一篇文章中複製): io

>>> import numpy as np
>>> a = np.arange(9).reshape(3,3)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> idx = (1,1)
>>> a[idx]
4
>>> idx = [1,1]
>>> a[idx]
array([[3, 4, 5],
       [3, 4, 5]])

關鍵是,儘管NumPy可能不是標準庫的一部分,但它是一個主要的 Python庫,在NumPy列表和元組中是徹底不一樣的東西。 import


#4樓

列表和元組之間的區別 變量

  1. 文字

    someTuple = (1,2) someList = [1,2]
  2. 尺寸

    a = tuple(range(1000)) b = list(range(1000)) a.__sizeof__() # 8024 b.__sizeof__() # 9088

    因爲元組操做的大小較小,所以它變得更快一些,可是在您擁有大量元素以前,沒必要多說。

  3. 容許的操做

    b = [1,2] b[0] = 3 # [3, 2] a = (1,2) a[0] = 3 # Error

    這也意味着您不能刪除元素或對元組進行排序。 可是,您能夠將新元素添加到列表和元組中,惟一的區別是您將經過添加元素來更改元組的ID

    a = (1,2) b = [1,2] id(a) # 140230916716520 id(b) # 748527696 a += (3,) # (1, 2, 3) b += [3] # [1, 2, 3] id(a) # 140230916878160 id(b) # 748527696
  4. 用法

    因爲列表是可變的,所以不能用做字典中的鍵,而可使用元組。

    a = (1,2) b = [1,2] c = {a: 1} # OK c = {b: 1} # Error
  5. 可哈希的元組可哈希,而列表則不可。 哈希函數返回對象的哈希值(若是有)。

    列表和元組的哈希值。


#5樓

列表是可變的,元組是不可變的。 可變項和不可變項之間的主要區別是,嘗試添加項時的內存使用狀況。

建立變量時,會將一些固定內存分配給該變量。 若是是列表,則分配的內存將大於實際使用的內存。 例如,若是當前內存分配爲100字節,則當您要追加第101個字節時,可能會另外分配100個字節(在這種狀況下,總共爲200個字節)。

可是,若是您知道不常常添加新元素,則應使用元組。 元組精確分配所需的內存大小,從而節省了內存,尤爲是當您使用較大的內存塊時。

相關文章
相關標籤/搜索