列表和元組有什麼區別?

已發表: 2021-11-28

元組和列表是 Python 中使用的一種數據結構。 列表使用方括號將數據存儲在單個變量中,而元組使用括號將數據存儲在一個變量中。 這兩種結構都用於存儲多個值和對象。

本文將深入探討列表和元組之間的主要區別,並探討它們的用例。 但首先,讓我們快速看一下它們之間的核心相似之處:

  • 您可以在元組和列表中存儲所有數據類型的項目和對象。
  • tuple 和 list 都允許使用它們各自的索引來訪問數據。
  • 這兩種數據類型都可以編譯和編目各種數據項。

目錄

Python 元組與列表

1. 語法差異

列表和元組的聲明在 Python 中總是不同的。 列表使用“[]”方括號聲明,而元組聲明使用“()”。

這是一個示例,可以更好地理解如何在 Python 中聲明列表和元組。

list_num = [7,8,9,10]

tup_num = (10,11,13,14)

打印(列表編號)

打印(tup_num)

這個序列的輸出是。

[7,8,9,10]

(10,11,13,14)

在此示例中,定義了一個名為 list_num 的變量,它容納從 7 到 10 的數字。我們還看到輸出包含在方括號中。 但是,定義為 tup_num 並保存從 10 到 14 的數字的變量使用括號顯示輸出。

Python 使用 type() 函數來幫助我們了解創建的項目的類型。

打印(類型(tup_num))

打印(類型(list_num))

輸出:

<類'元組'>

<類'列表'>

2. 可變性(可變 vs 不可變)

元組和列表在可變性方面是矛盾的。 元組是不可變的結構,創建後無法修改或更改。 相反,列表是可變結構,可以在創建後輕鬆更改或修改。

只有元組可以用作字典的鍵,因為它們具有不可變的性質。 需要時,列表永遠不能用作鍵。

3. 改變一個對象(List vs Tuple)

讓我們找出當嘗試對列表進行更改時會發生什麼。

名稱 = [亞歷克斯、瑞克、馬丁]

名稱 [0] = “roxy”

注意:第一個元素總是被稱為 0 而不是 1。

現在讓我們看看執行以下命令後的輸出:

>>>名稱

輸出:

[羅克西瑞克馬丁]

輸出顯示列表中的第一項如何更改。

現在讓我們看看如果使用元組會產生什麼結果。

姓名 = (亞歷克斯、瑞克、馬丁)

當使用更改元組中的項目時

名稱(0)=“roxy”

輸出將是:

TypeError:“元組”對像不支持項目分配。

這意味著元組數據結構不支持後來更改的對象。 因此,我們可以得出結論,只能修改列表,不能修改元組。

4. 複製與重用

不能複制元組。 這裡的原因是元組的不可變性質。 例如,如果您運行一個元組 (tup_name),您將看到它已恢復到自身。

例子:

名稱=('艾倫','siri','Michaela')

複製名稱 = 元組(名稱)

打印(名稱是copyNames)

這裡的輸出將是—— “真”。

相反,如果您嘗試對列表執行相同的操作(如示例所示):

例子:

名稱 = [“艾倫”,“siri”“邁克爾拉”]

copyNames = 列表(名稱)

打印(名稱是copyNames)

輸出將顯示為“假”。

您必須將完整名稱複製並粘貼到新列表中才能獲得真正的輸出。

5. Python 元組與列表 | 尺寸差異

由於元組的不可變特性,Python 僅以開銷相對較低的大塊的形式分配元組內存。 對於列表,Python 只提供更小尺寸的內存塊。 結果,與列表相比,元組的內存量很小。 然而,這意味著當涉及許多項目時,元組比列表使用起來要快得多。

6. 異構與同質

元組可以存儲各種不同類型的元素。 相反,列表可以存儲同質的相同變體的特徵或數據。

然而,這只是語義上的差異。 例如,列表可以存儲各種類型的數據,元組也可以存儲相同類型的數據。

例子:

list_elements = ['艾倫',20,'瑪麗']

元組元素=('艾倫',“瑪麗”,“亞歷克斯”)

即使列表包含數字和字符串的組合,代碼也將無縫運行。

7. 長度差異

列表和元組的長度和大小也不同。 雖然元組的長度不同,但元組的長度是固定的。 因此,列表的大小可以隨時更改,與定義後保持固定的元組的長度不同。

例子:

list_names = ['艾倫','瑪麗','亞歷克斯']

list_names.append(“roxy”)

打印(列表名稱)

輸出:

['艾倫','瑪麗','亞歷克斯','roxy']

當涉及列表時,也可以使用 insert() 函數而不是 append() 函數來實現確切的輸出。

然而,元組數據結構並沒有為我們提供任何改變其大小的方法。

8.用例

在不同的情況下,這些數據結構中至少有一個運行良好。 它通常取決於使用哪種數據結構的程序的編碼器。 數據結構的選擇基於數據項將來是否會被重寫。

與列表相比,元組作為數據結構更為重要,因為:

  • 使用元組而不是列表可以通知編碼器或數據解釋器不要更改信息。
  • 您還可以使用元組在沒有鍵的情況下恢復數據。
  • 元組相當於 Python 中的字典。
  • 存儲在列表中的元組非常容易閱讀。

元組的不可變和可散列特性使它們成為字典的完美替代品。 另一方面,您不能使用列表來替換字典,因為它們不支持 _hash_() 函數。

例子:

key_val= {('alex', 'brave'):124} #有效

key_val = {['alex', 'brave']:124} #無效

9. 嵌套列表和元組

元組和列表可以相互存儲。 嵌套的元組可以容納更多的元組。 同樣,嵌套列表也可以有更多列表。

10. 調試

與列表相比,元組在更廣泛的項目中更容易調試。 這是因為元組的不可變特性。 但是,當涉及的數據量要少得多時,總是建議依賴列表。 元組也更容易跟踪,因為它們無法更改,這與列表不同,列表中的錯誤很難跟踪。

11. 功能與操作

Python 有一些有益的函數可以應用於元組和列表,例如 sorted、sum、all、min、max、lean 等。

當涉及操作時,人們可能會在列表和元組中發現許多相似之處。 但是,列表具有一些元組中沒有的額外功能。 這些主要是彈出和插入操作,以及刪除和存儲項目。

關鍵要點

  • 元組的功能比列表少。
  • 元組的結構是不可變的,而列表的結構是可變的。
  • 元組的長度是固定的,而列表的長度可以變化。
  • 列表的語法用“[]”方括號表示,而元組的語法用“()”括號的形式表示。
  • 與列表相比,元組消耗的內存更少。
  • 當涉及到訪問元素時,元組數據結構是最好的。
  • 函數列表更擅長執行特定的刪除和插入操作。
  • 涉及元組的迭代比涉及列表的迭代快。
  • 列表可能有多個構建方法,而元組沒有。

通過 upGrad 為期 18 個月的數據科學理學碩士課程,詳細了解 Python 的精髓及其高級概念 與利物浦約翰摩爾斯大學和 IIIT 班加羅爾合作的項目。 借助行業領先的師資力量、500 多個小時的學習材料和疑難解答課程,學生有機會掌握 Python 和其他數據科學基礎知識,從而相應地引導他們的職業生涯。 此外,該計劃有助於培養超過 14 種語言和工具的能力,如 Tableau、MySQL、Excel、MongoDB 等。

所以,不要猶豫。 今天就聯繫我們吧!

何時使用元組或列表?

如果你需要你的數據項是只讀的,那麼你應該使用元組。 元組中的數據保持不變,因為它們保證了永不更改的數據的可用性。

然而,列表是非常可變的。 因此,它們中的數據總是可以更改的。 在列表中移動、切換、刪除和添加項目非常靈活。 當數據需要在程序週期的後期階段進行修改時,最好使用它們。

與列表相比,元組更快嗎?

是的,創建一個元組比創建一個列表花費的時間要少得多。 製作列表時,需要訪問多個內存塊。 這是因為元組中的元素不能被刪除和替換,而列表中的特徵可以在程序週期中多次更改。

元組和列表在現實生活中在哪裡使用?

可以製作一個列表來存儲使用特定食譜烹飪特定菜餚所需的步驟。 該列表涉及對數據的順序訪問。 因此,可以按順序訪問這些步驟。 另一方面,元組可用於存儲您居住地的經度或緯度等數據。 這是因為元組是預定義數據的集合。 您還可以使用相同的元組來存儲其他地方的位置坐標。