python 元組和列表的區別

2022-09-26 10:27:18 字數 2675 閱讀 9664

靜態資料型別

靜態資料型別是指不可以對該資料型別進行修改,即只www.cppcns.com讀的資料型別。迄今為止學過的靜態資料型別有字串,元組。

在使用操作符對字串,元組進行修改時,python會丟擲型別錯誤的異常資訊,我們可以在互動模式中進行驗證:

>>> content = "static data type"

>>> content[0]=s

traceback (most recent call last):

file "", line 1, in

nameerror: name 's' is not defined

>>> numbers = (1,2,3,4,5)

>>> numbers[0] = 6

traceback (most recent call last):

file "", line 1, in

typeerror: 'tuple' object does not support item assignment

可變資料型別

與靜態資料型別相對的是可變資料型別,在可變資料型別中,可以對集合中的元素進行修改。列表,以及在後面將要介紹的復合資料型別:字典,集合,類型別等,都是可變的資料型別。我們同樣可以在互動模式中進行驗證:

>>> numbers = [1,2,3,4,5]

>>> id(numbers)

2749153235976

>>> numbers[0]=6

>>> numbers

[6, 2, 3, 4, 5]

>>> id(numbers)

2749153235976

從互動模式的輸出中可以分析出,可以通過操作符列表型別進行修改。修改後的列表與修改前的列表,它們具有相同的id值,說明是同乙個列表。

執行內建的id函式可以輸出id值,id值即記憶體位址。

元組與列表的區別

在使用元組的場景中,都可以使用列表來進行代替,那麼為什麼還要定義元組這種資料型別?在本小節的內容中,通過兩個方面來進行分析:

(1) 元組是靜態,唯讀的資料型別

元組與列表的核心區別在於,元組是靜態的,列表是動態的, 可變的。我們在定義變數時,如果該資料物件具備靜態,唯讀的屬性,應當使用元組,否則應當使用列表。以生活中的購物清單來進行舉例,在購物清單中,我們可以隨時對清單進行修改,比如新增某乙個商品,或從購物車中移除某乙個商品。

購物清單是可修改的,動態的,現在通過python**進行模擬:

# __desc__ = 通過python**模擬購物清單的新增和刪除

# 定義shopping_list,表示購物清單

shopping_list = ["消毒液", "口罩", "白酒"]

# 口罩已經斷貨,從購物車中移除

shopping_list.remove("口罩")

# shopping_list的輸出為["消毒液", "白酒"]

# 從購物車中新增葵花口服液

shopping_list.append("葵花口服液")

# shopping_list的輸出為["消毒液", "白酒", "葵花口服液"]

一周有七天,從周一到週日,不會再包含其它的時間單位,一周所包含的時間顯然是靜態的。此時通過元組來定義一周的所有時間,在使用上非常自然:

# __desc__ = 通過元組來表示一周

# 定義變數week,表示一周

week = ("周一", "周二", "週三","周四", "周五", "週六","週日")

我們同樣可以通過列表來表示一周:

# __desc__ = 通過列表來表示一周

# 定義變數week,表示一周

week = ["周一", "周二", "週三","周四", "周五", "週六","週日"]

由於列表是動態的資料型別,所以可以在程式中隨時對列表進行修改,比如某粗心的程式設計師在一周的時間裡新增了乙個周八:

# __desc__ = 粗心的程式設計師新增了個周八

# 定義變數week,表示一周

week = ["周一", "周二", "週三","周四", "周五", "週六","週日"]

week.append("周八")

# week的輸出為["周一", "周二", "週三","周四", 程式設計客棧"周五", "週六","週日","周八"]

一周的時間裡包含周八,這顯然不符合日常邏輯。而使用元組,可以避免這樣的問題,一旦對元組進行修改,py程式設計客棧thon就會丟擲異常。

(2) 元組的自動解包

利用這樣的特性,可以非常優雅地對多個變數進行賦值。

**例項:

# __desc__ = 通過元組的解包來優雅地賦值

# 定義returned_values表示函式的返回值

returned_values = (true, 1314)

state, result = retured_values

# state的值為true, result的值為1314

在python的函式中可以返回多個值,實質返回的是乙個元組,然後利用元組的自動解包,將返回值一一地進行賦值。

知識要點

(1) 靜態資料型別是指不可以對該資料型別進行修改,即唯讀的資料型別。迄今為止學過的靜態資料型別有字串,元組。

(2) 與靜態資料型別相對的是動態資料型別,動態資料型別支援對集合中的元素進行修改。列表,以及其它復合資料型別:字典,集合,類型別等,都是動態的資料型別。

python元組和列表的區別

python元組和python列表資料類似,底層都是線性表。唯一不同的是,python元組賦值後所儲存的資料不能被程式修改,可以將元組看作是只能讀取資料不能修改資料的列表。1 元組宣告與賦值 宣告乙個元組並賦值的語法與列表相同,不同之處是元組使用小括號,列表使用方括號,元素之間也是用英文逗號分隔。需...

總結python 元組和列表的區別

python的基本型別中有元組和列表這麼倆個,但是這哥倆卻比較難於區分,今天就來用簡單的例項說明兩者的不同。列表 1.使用中括號 包裹,元素值和個數可變 例項 aaa sitename www pythontab com 元組 1.使用中括號 包裹,不可以被更改 儘管他們的內容可以 bbb site...

和range的區別 python元組和列表的區別

元旦快樂 咱們開始 1.列表和元組都是序列。不同的是 列表是可變型序列,而元組是不可變型別序列。2.它們都可以按照順序存放元素,且型別不受到限制。在python中,列表可以儲存多種資料型別的元素。3.列表可以使用切片訪問和修改列表的元素。元組也支援切片訪問,但是不允許被修改。4.元組比列表的訪問速度...