python 元組和列表的區(qū)別
靜態(tài)數(shù)據(jù)類型
靜態(tài)數(shù)據(jù)類型是指不可以對(duì)該數(shù)據(jù)類型進(jìn)行修改,即只讀的數(shù)據(jù)類型。迄今為止學(xué)過(guò)的靜態(tài)數(shù)據(jù)類型有字符串,元組。

在使用[]操作符對(duì)字符串,元組進(jìn)行修改時(shí),Python會(huì)拋出類型錯(cuò)誤的異常信息,我們可以在交互模式中進(jìn)行驗(yà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ù)類型相對(duì)的是可變數(shù)據(jù)類型,在可變數(shù)據(jù)類型中,可以對(duì)集合中的元素進(jìn)行修改。列表,以及在后面將要介紹的復(fù)合數(shù)據(jù)類型:字典,集合,類類型等,都是可變的數(shù)據(jù)類型。我們同樣可以在交互模式中進(jìn)行驗(yàn)證:
>>> numbers = [1,2,3,4,5] >>> id(numbers) 2749153235976 >>> numbers[0]=6 >>> numbers [6, 2, 3, 4, 5] >>> id(numbers) 2749153235976
從交互模式的輸出中可以分析出,可以通過(guò)[]操作符列表類型進(jìn)行修改。修改后的列表與修改前的列表,它們具有相同的id值,說(shuō)明是同一個(gè)列表。
執(zhí)行內(nèi)置的id函數(shù)可以輸出id值,id值即內(nèi)存地址。
元組與列表的區(qū)別
在使用元組的場(chǎng)景中,都可以使用列表來(lái)進(jìn)行代替,那么為什么還要定義元組這種數(shù)據(jù)類型?在本小節(jié)的內(nèi)容中,通過(guò)兩個(gè)方面來(lái)進(jìn)行分析:
(1) 元組是靜態(tài),只讀的數(shù)據(jù)類型
元組與列表的核心區(qū)別在于,元組是靜態(tài)的,列表是動(dòng)態(tài)的, 可變的。我們?cè)诙x變量時(shí),如果該數(shù)據(jù)對(duì)象具備靜態(tài),只讀的屬性,應(yīng)當(dāng)使用元組,否則應(yīng)當(dāng)使用列表。以生活中的購(gòu)物清單來(lái)進(jìn)行舉例,在購(gòu)物清單中,我們可以隨時(shí)對(duì)清單進(jìn)行修改,比如添加某一個(gè)商品,或從購(gòu)物車中移除某一個(gè)商品。
購(gòu)物清單是可修改的,動(dòng)態(tài)的,現(xiàn)在通過(guò)Python代碼進(jìn)行模擬:
# __desc__ = 通過(guò)Python代碼模擬購(gòu)物清單的添加和刪除
# 定義shopping_list,表示購(gòu)物清單
shopping_list = ["消毒液", "口罩", "白酒"]
# 口罩已經(jīng)斷貨,從購(gòu)物車中移除
shopping_list.remove("口罩")
# shopping_list的輸出為["消毒液", "白酒"]
# 從購(gòu)物車中添加葵花口服液
shopping_list.append("葵花口服液")
# shopping_list的輸出為["消毒液", "白酒", "葵花口服液"]
一周有七天,從周一到周日,不會(huì)再包含其它的時(shí)間單位,一周所包含的時(shí)間顯然是靜態(tài)的。此時(shí)通過(guò)元組來(lái)定義一周的所有時(shí)間,在使用上非常自然:
# __desc__ = 通過(guò)元組來(lái)表示一周
# 定義變量week,表示一周
week = ("周一", "周二", "周三","周四", "周五", "周六","周日")
我們同樣可以通過(guò)列表來(lái)表示一周:
# __desc__ = 通過(guò)列表來(lái)表示一周
# 定義變量week,表示一周
week = ["周一", "周二", "周三","周四", "周五", "周六","周日"]
由于列表是動(dòng)態(tài)的數(shù)據(jù)類型,所以可以在程序中隨時(shí)對(duì)列表進(jìn)行修改,比如某粗心的程序員在一周的時(shí)間里添加了一個(gè)周八:
# __desc__ = 粗心的程序員添加了個(gè)周八
# 定義變量week,表示一周
week = ["周一", "周二", "周三","周四", "周五", "周六","周日"]
week.append("周八")
# week的輸出為["周一", "周二", "周三","周四", "周五", "周六","周日","周八"]
一周的時(shí)間里包含周八,這顯然不符合日常邏輯。而使用元組,可以避免這樣的問(wèn)題,一旦對(duì)元組進(jìn)行修改,Python就會(huì)拋出異常。
(2) 元組的自動(dòng)解包
利用這樣的特性,可以非常優(yōu)雅地對(duì)多個(gè)變量進(jìn)行賦值。
代碼實(shí)例:
# __desc__ = 通過(guò)元組的解包來(lái)優(yōu)雅地賦值 # 定義returned_values表示函數(shù)的返回值 returned_values = (True, 1314) state, result = retured_values # state的值為True, result的值為1314
在Python的函數(shù)中可以返回多個(gè)值,實(shí)質(zhì)返回的是一個(gè)元組,然后利用元組的自動(dòng)解包,將返回值一一地進(jìn)行賦值。
知識(shí)要點(diǎn)
(1) 靜態(tài)數(shù)據(jù)類型是指不可以對(duì)該數(shù)據(jù)類型進(jìn)行修改,即只讀的數(shù)據(jù)類型。迄今為止學(xué)過(guò)的靜態(tài)數(shù)據(jù)類型有字符串,元組。
(2) 與靜態(tài)數(shù)據(jù)類型相對(duì)的是動(dòng)態(tài)數(shù)據(jù)類型,動(dòng)態(tài)數(shù)據(jù)類型支持對(duì)集合中的元素進(jìn)行修改。列表,以及其它復(fù)合數(shù)據(jù)類型:字典,集合,類類型等,都是動(dòng)態(tài)的數(shù)據(jù)類型。
以上就是python 元組和列表的區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于python 元組和列表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pygame中blit()參數(shù)的使用及臟矩形動(dòng)畫形成的說(shuō)明
這篇文章主要介紹了pygame中blit()參數(shù)的使用及臟矩形動(dòng)畫形成的說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
mac系統(tǒng)裝python后pip命令不能用的解決方案
這篇文章主要介紹了mac系統(tǒng)裝python后pip命令不能用的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
淺談Pandas:Series和DataFrame間的算術(shù)元素
今天小編就為大家分享一篇淺談Pandas:Series和DataFrame間的算術(shù)元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Python算術(shù)運(yùn)算符實(shí)例詳解
這篇文章主要介紹了Python算術(shù)運(yùn)算符實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05
Python?中設(shè)置請(qǐng)求的最大重試次數(shù)示例代碼
本篇文章介紹了為什么我們會(huì)收到錯(cuò)誤消息,指出超出了最大重試次數(shù),以及我們?nèi)绾卧?Python?中為請(qǐng)求設(shè)置?max_retries,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-06-06
Pycharm遠(yuǎn)程調(diào)試openstack的方法
這篇文章主要為大家詳細(xì)介紹了Pycharm遠(yuǎn)程調(diào)試openstack的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
詳解OpenCV執(zhí)行連通分量標(biāo)記的方法和分析
在本教程中,您將學(xué)習(xí)如何使用?OpenCV?執(zhí)行連通分量標(biāo)記和分析。具體來(lái)說(shuō),我們將重點(diǎn)介紹?OpenCV?最常用的連通分量標(biāo)記函數(shù):cv2.connectedComponentsWithStats,感興趣的可以了解一下2022-08-08
Python實(shí)現(xiàn)批量將word轉(zhuǎn)html并將html內(nèi)容發(fā)布至網(wǎng)站的方法
這篇文章主要介紹了Python實(shí)現(xiàn)批量將word轉(zhuǎn)html并將html內(nèi)容發(fā)布至網(wǎng)站的方法,涉及Python調(diào)用第三方接口進(jìn)行文件轉(zhuǎn)換及操作數(shù)據(jù)庫(kù)等相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
python使用rsa非對(duì)稱加密過(guò)程解析
這篇文章主要介紹了python使用rsa非對(duì)稱加密過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12

