python 元組和列表的區(qū)別
靜態(tài)數(shù)據(jù)類型
靜態(tài)數(shù)據(jù)類型是指不可以對該數(shù)據(jù)類型進(jìn)行修改,即只讀的數(shù)據(jù)類型。迄今為止學(xué)過的靜態(tài)數(shù)據(jù)類型有字符串,元組。
在使用[]操作符對字符串,元組進(jìn)行修改時,Python會拋出類型錯誤的異常信息,我們可以在交互模式中進(jìn)行驗證:
>>> content = "static data type" >>> content[0]=S Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'S' is not defined >>> numbers = (1,2,3,4,5) >>> numbers[0] = 6 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
可變數(shù)據(jù)類型
與靜態(tài)數(shù)據(jù)類型相對的是可變數(shù)據(jù)類型,在可變數(shù)據(jù)類型中,可以對集合中的元素進(jìn)行修改。列表,以及在后面將要介紹的復(fù)合數(shù)據(jù)類型:字典,集合,類類型等,都是可變的數(shù)據(jù)類型。我們同樣可以在交互模式中進(jìn)行驗證:
>>> numbers = [1,2,3,4,5] >>> id(numbers) 2749153235976 >>> numbers[0]=6 >>> numbers [6, 2, 3, 4, 5] >>> id(numbers) 2749153235976
從交互模式的輸出中可以分析出,可以通過[]操作符列表類型進(jìn)行修改。修改后的列表與修改前的列表,它們具有相同的id值,說明是同一個列表。
執(zhí)行內(nèi)置的id函數(shù)可以輸出id值,id值即內(nèi)存地址。
元組與列表的區(qū)別
在使用元組的場景中,都可以使用列表來進(jìn)行代替,那么為什么還要定義元組這種數(shù)據(jù)類型?在本小節(jié)的內(nèi)容中,通過兩個方面來進(jìn)行分析:
(1) 元組是靜態(tài),只讀的數(shù)據(jù)類型
元組與列表的核心區(qū)別在于,元組是靜態(tài)的,列表是動態(tài)的, 可變的。我們在定義變量時,如果該數(shù)據(jù)對象具備靜態(tài),只讀的屬性,應(yīng)當(dāng)使用元組,否則應(yīng)當(dāng)使用列表。以生活中的購物清單來進(jìn)行舉例,在購物清單中,我們可以隨時對清單進(jìn)行修改,比如添加某一個商品,或從購物車中移除某一個商品。
購物清單是可修改的,動態(tài)的,現(xiàn)在通過Python代碼進(jìn)行模擬:
# __desc__ = 通過Python代碼模擬購物清單的添加和刪除 # 定義shopping_list,表示購物清單 shopping_list = ["消毒液", "口罩", "白酒"] # 口罩已經(jīng)斷貨,從購物車中移除 shopping_list.remove("口罩") # shopping_list的輸出為["消毒液", "白酒"] # 從購物車中添加葵花口服液 shopping_list.append("葵花口服液") # shopping_list的輸出為["消毒液", "白酒", "葵花口服液"]
一周有七天,從周一到周日,不會再包含其它的時間單位,一周所包含的時間顯然是靜態(tài)的。此時通過元組來定義一周的所有時間,在使用上非常自然:
# __desc__ = 通過元組來表示一周 # 定義變量week,表示一周 week = ("周一", "周二", "周三","周四", "周五", "周六","周日") 我們同樣可以通過列表來表示一周: # __desc__ = 通過列表來表示一周 # 定義變量week,表示一周 week = ["周一", "周二", "周三","周四", "周五", "周六","周日"]
由于列表是動態(tài)的數(shù)據(jù)類型,所以可以在程序中隨時對列表進(jìn)行修改,比如某粗心的程序員在一周的時間里添加了一個周八:
# __desc__ = 粗心的程序員添加了個周八 # 定義變量week,表示一周 week = ["周一", "周二", "周三","周四", "周五", "周六","周日"] week.append("周八") # week的輸出為["周一", "周二", "周三","周四", "周五", "周六","周日","周八"]
一周的時間里包含周八,這顯然不符合日常邏輯。而使用元組,可以避免這樣的問題,一旦對元組進(jìn)行修改,Python就會拋出異常。
(2) 元組的自動解包
利用這樣的特性,可以非常優(yōu)雅地對多個變量進(jìn)行賦值。
代碼實例:
# __desc__ = 通過元組的解包來優(yōu)雅地賦值 # 定義returned_values表示函數(shù)的返回值 returned_values = (True, 1314) state, result = retured_values # state的值為True, result的值為1314
在Python的函數(shù)中可以返回多個值,實質(zhì)返回的是一個元組,然后利用元組的自動解包,將返回值一一地進(jìn)行賦值。
知識要點
(1) 靜態(tài)數(shù)據(jù)類型是指不可以對該數(shù)據(jù)類型進(jìn)行修改,即只讀的數(shù)據(jù)類型。迄今為止學(xué)過的靜態(tài)數(shù)據(jù)類型有字符串,元組。
(2) 與靜態(tài)數(shù)據(jù)類型相對的是動態(tài)數(shù)據(jù)類型,動態(tài)數(shù)據(jù)類型支持對集合中的元素進(jìn)行修改。列表,以及其它復(fù)合數(shù)據(jù)類型:字典,集合,類類型等,都是動態(tài)的數(shù)據(jù)類型。
以上就是python 元組和列表的區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于python 元組和列表的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python3.7 pyodbc完美配置訪問access數(shù)據(jù)庫
最近小編需要學(xué)習(xí)python連接access數(shù)據(jù)庫,發(fā)現(xiàn)很多朋友推薦pyodbc,那么這篇文章就先為大家介紹一下Python3.7下pyodbc的配置方法2019-10-10用Python實現(xiàn)一個簡單的用戶系統(tǒng)
大家好,本篇文章主要講的是用Python實現(xiàn)一個簡單的用戶系統(tǒng),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01python數(shù)據(jù)類型可變不可變知識點總結(jié)
在本篇文章里小編給各位整理的是關(guān)于python數(shù)據(jù)類型可變不可變知識點總結(jié),需要的朋友們可以學(xué)習(xí)下。2020-03-03Django框架創(chuàng)建mysql連接與使用示例
這篇文章主要介紹了Django框架創(chuàng)建mysql連接與使用,簡單介紹了Linux環(huán)境下mysql的安裝,并結(jié)合實例形式分析了Django框架基于第三方庫pymysql連接mysql數(shù)據(jù)庫相關(guān)操作技巧,需要的朋友可以參考下2019-07-07Django動態(tài)展示Pyecharts圖表數(shù)據(jù)的幾種方法
本文主要介紹了Django動態(tài)展示Pyecharts圖表數(shù)據(jù)的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08