python中列表和元組的區(qū)別
如果有了解過(guò)python中的列表和元組,你可能會(huì)知道相對(duì)于列表,元組是不可變的,也就是說(shuō)元組中的數(shù)據(jù)不能隨意更改。除了列表是用中括號(hào)表示而元組是用小括號(hào)表示之外,這兩種數(shù)據(jù)類(lèi)型好像并沒(méi)有什么不同,都是用來(lái)存放一系列的數(shù)據(jù),事實(shí)真是如此嗎?
a = [1, 3, 5, 7, 'a'] b = (1, 3, 5, 7, 'b') # 現(xiàn)在改變b中的值 b[2] = 4
TypeError Traceback (most recent call last) <ipython-input-2-96f3d2fefb53> in <module>() 4 5 # 現(xiàn)在改變b中數(shù)據(jù)的值 ----> 6 b[2] = 4 TypeError: 'tuple' object does not support item assignment
看起來(lái)除了元組不可變之外,列表完全可以取代元組,為什么要多此一舉創(chuàng)造出元組這種類(lèi)型?其實(shí)這背后有更深層的含義,列表是用來(lái)表示一組相同類(lèi)型(相同價(jià)值)的數(shù)據(jù),而元組用來(lái)存放不同類(lèi)型(不同價(jià)值)的數(shù)據(jù),簡(jiǎn)單來(lái)說(shuō),列表是同質(zhì)的,而元組是異構(gòu)的。
比如說(shuō),現(xiàn)在有一本書(shū),書(shū)里面有一些批注。我們用元組來(lái)表示書(shū)中第幾頁(yè)第幾行的內(nèi)容,像這樣:position = (page, line),然后把它放到字典里作為批注的鍵,表示第幾頁(yè)第幾行有批注。同時(shí),我們用列表來(lái)表示這些位置,如果有新的位置,可以加入列表。這符合列表可以更改數(shù)據(jù)的特點(diǎn)。但是如果更改元組里面的數(shù)據(jù)就沒(méi)有意義了,因?yàn)檫@些坐標(biāo)本來(lái)就是存在的。
在python的模塊中,我們可以找到很多例子:
range(10)
range(0, 10)
比如range方法用來(lái)生成一列有序地?cái)?shù)據(jù),這些數(shù)據(jù)是等價(jià)的,并沒(méi)有不同的功能,所以用列表來(lái)表示最合適。而像下面的例子:
from datetime import datetime datetime.now()
datetime.datetime(2017, 12, 17, 20, 23, 13, 578752)
當(dāng)前時(shí)間適合用元組來(lái)表式,因?yàn)樵M中每個(gè)數(shù)據(jù)有不同的功能,或者說(shuō)有不同的價(jià)值,像第一個(gè)數(shù)據(jù)表示年份。
說(shuō)到這,想起了我們之前說(shuō)過(guò)的具名元組nametuple,它用來(lái)快速的生成一個(gè)類(lèi),可以看成是類(lèi)的輕量級(jí)替代方法,也很符合我們上面說(shuō)的元組的功能。
相關(guān)文章
Python+opencv 實(shí)現(xiàn)圖片文字的分割的方法示例
這篇文章主要介紹了Python+opencv 實(shí)現(xiàn)圖片文字的分割的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python multiprocessing 進(jìn)程間通信方式實(shí)現(xiàn)
本文主要介紹了Python multiprocessing 進(jìn)程間通信方式實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02python入門(mén)教程之識(shí)別驗(yàn)證碼
這篇文章主要介紹了python中識(shí)別驗(yàn)證碼的相關(guān)資料,這屬于學(xué)習(xí)python的基本入門(mén)教程,文中介紹的非常詳細(xì),文末也給出了完整的示例代碼,需要的朋友們可以參考學(xué)習(xí),下面來(lái)一起看看吧。2017-03-03教你如何在Pycharm中導(dǎo)入requests模塊
這篇文章主要介紹了教你如何在Pycharm中導(dǎo)入requests模塊,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09