摘要:如果有了解過(guò)中的列表和元組,你可能會(huì)知道相對(duì)于列表,元組是不可變的,也就是說(shuō)元組中的數(shù)據(jù)不能隨意更改。同時(shí),我們用列表來(lái)表示這些位置,如果有新的位置,可以加入列表。
如果有了解過(guò)python中的列表和元組,你可能會(huì)知道相對(duì)于列表,元組是不可變的,也就是說(shuō)元組中的數(shù)據(jù)不能隨意更改。除了列表是用中括號(hào)表示而元組是用小括號(hào)表示之外,這兩種數(shù)據(jù)類型好像并沒(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)in () 4 5 # 現(xiàn)在改變b中數(shù)據(jù)的值 ----> 6 b[2] = 4 TypeError: "tuple" object does not support item assignment
看起來(lái)除了元組不可變之外,列表完全可以取代元組,為什么要多此一舉創(chuàng)造出元組這種類型?其實(shí)這背后有更深層的含義,列表是用來(lái)表示一組相同類型(相同價(jià)值)的數(shù)據(jù),而元組用來(lái)存放不同類型(不同價(jià)值)的數(shù)據(jù),簡(jiǎn)單來(lái)說(shuō),列表是同質(zhì)的,而元組是異構(gòu)的。
比如說(shuō),現(xiàn)在有一本書,書里面有一些批注。我們用元組來(lái)表示書中第幾頁(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è)類,可以看成是類的輕量級(jí)替代方法,也很符合我們上面說(shuō)的元組的功能。
本人才疏學(xué)淺,上文中難免有些錯(cuò)誤,還請(qǐng)各位品評(píng)指正。如果覺(jué)得寫的還行,歡迎關(guān)注我的公眾號(hào)MLGroup,帶你走進(jìn)機(jī)器學(xué)習(xí)的世界。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41078.html
摘要:序列化的這種過(guò)程,我們將其稱為腌制。而把模塊編譯成二進(jìn)制語(yǔ)言程序的這個(gè)過(guò)程叫做字節(jié)編譯,這個(gè)過(guò)程會(huì)產(chǎn)生一個(gè)與編譯的模塊對(duì)應(yīng)的文件。 常量: 在Python中常量的使用并不像java等其他編程語(yǔ)言一樣有特定的常量實(shí)現(xiàn)的關(guān)鍵字,在Python中定義需要用對(duì)象的方法來(lái)創(chuàng)建。 showImg(https://segmentfault.com/img/bVP6mZ?w=1232&h=703); ...
摘要:序列化的這種過(guò)程,我們將其稱為腌制。而把模塊編譯成二進(jìn)制語(yǔ)言程序的這個(gè)過(guò)程叫做字節(jié)編譯,這個(gè)過(guò)程會(huì)產(chǎn)生一個(gè)與編譯的模塊對(duì)應(yīng)的文件。 常量: 在Python中常量的使用并不像java等其他編程語(yǔ)言一樣有特定的常量實(shí)現(xiàn)的關(guān)鍵字,在Python中定義需要用對(duì)象的方法來(lái)創(chuàng)建。 showImg(https://segmentfault.com/img/bVP6mZ?w=1232&h=703); ...
摘要:下面代碼會(huì)存在什么問(wèn)題,如何改進(jìn)一行代碼輸出之間的所有偶數(shù)。簡(jiǎn)述進(jìn)程之間如何通信多路復(fù)用的作用模型的區(qū)別什么是并發(fā)和并行解釋什么是異步非阻塞的作用面試題說(shuō)說(shuō)你知道的命令如何查看某次提交修改的內(nèi)容答案掃碼下面的二維碼訂閱即可獲取。 引言 最近在刷面試題,所以需要看大量的 Python 相關(guān)的面試題,從大量的題目中總結(jié)了很多的知識(shí),同時(shí)也對(duì)一些題目進(jìn)行拓展了,但是在看了網(wǎng)上的大部分面試題不...
摘要:回到目錄評(píng)論區(qū)抽粉絲送書啦歡迎大家在評(píng)論區(qū)提出意見(jiàn)和建議抽兩位幸運(yùn)兒送書,實(shí)物圖如下開(kāi)發(fā)從入門到精通內(nèi)容簡(jiǎn)介案例教學(xué)。 ? 作者主頁(yè):海擁 ? 作者簡(jiǎn)介:?CSDN...
摘要:列表和元組都支持切片操作都可以隨意嵌套列表是動(dòng)態(tài)的,長(zhǎng)度可變,可以隨意的增加刪減或改變?cè)?。每行最大長(zhǎng)度請(qǐng)限制在個(gè)字符全局的類和函數(shù)的上方需要空兩個(gè)空行,而類的函數(shù)之間需要空一個(gè)空行 03 | 列表和元組,到底用哪一個(gè)?列表和元組,都是一個(gè)可以放置任意數(shù)據(jù)類型的有序集合,與其它語(yǔ)言相比較,集合的數(shù)據(jù)類型不要求一致列表是動(dòng)態(tài)...
閱讀 3847·2021-09-27 13:56
閱讀 887·2021-09-08 09:36
閱讀 775·2019-08-30 15:54
閱讀 618·2019-08-29 17:29
閱讀 938·2019-08-29 17:21
閱讀 1692·2019-08-29 16:59
閱讀 2770·2019-08-29 13:03
閱讀 2971·2019-08-29 12:47