亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python中的列表和元組區(qū)別分析

瀏覽:19日期:2022-06-30 17:55:33

列表(list)和元組(tuple)的一些基礎(chǔ)

list和tuple都是一個(gè)可以放置任意數(shù)據(jù)類型的有序集合,都是既可以存放數(shù)字、字符串、對(duì)象等

python中的列表和元組區(qū)別分析

list和tuple都支持負(fù)索引

In [8]: nums[-2]Out[8]: ’ad’In [9]: tp[-2]Out[9]: ’33’

list和tuple都支持切片操作

In [10]: nums[1:3]Out[10]: [3, ’ad’]In [11]: tp[1:3]Out[11]: (3, ’33’)

list和tuple都可以隨意嵌套

In [12]: nums = [[1,2,3],[’s’,’ff’],[’34’,3,5]]In [13]: tp = ((23,4,’f’),45,’d’,(’dd’,4,’ff’))

list和tuple的一些區(qū)別 列表是動(dòng)態(tài)的,長(zhǎng)度大小不固定,可以隨意的增加、刪除、修改元素 元組是靜態(tài)的,長(zhǎng)度在初始化的時(shí)候就已經(jīng)確定不能更改,更無(wú)法增加、刪除、修改元素

python中的列表和元組區(qū)別分析

從圖中看出我們對(duì)list做出修改是成功的,但是對(duì)tuple修改的時(shí)候,確拋出了錯(cuò)誤,那如果想對(duì)tuple做出改變?cè)撊绾巫瞿兀恐荒苤匦麻_(kāi)辟一塊內(nèi)存,重新生成新到的tuple了。

python中的列表和元組區(qū)別分析

從tuple的源碼中也可以看出,只有兩個(gè)自帶的方法,一個(gè)是統(tǒng)計(jì)元素出現(xiàn)的次數(shù)一個(gè)是查詢?cè)氐乃饕?/p>list和tuple存儲(chǔ)方式的差異

我們先來(lái)看個(gè)例子

In [19]: nums=[’a’,1,2]In [20]: tp=(’a’,1,2)In [21]: nums.__sizeof__()Out[21]: 64In [22]: tp.__sizeof__()Out[22]: 48

這里構(gòu)造了一個(gè)list和一個(gè)tuple。他們存儲(chǔ)的內(nèi)容是相同的,__sizeof__方法可以打印系統(tǒng)分配空間的大小。可以看到他們所占用的內(nèi)存空間是不同的,存儲(chǔ)的內(nèi)容相同,但是list比tuple多占用了16自己的內(nèi)存。

先來(lái)看一下一個(gè)數(shù)組的內(nèi)存分配過(guò)程:

In [23]: l=[]In [24]: l.__sizeof__() // 空列表分配了40字節(jié)的內(nèi)存Out[24]: 40In [25]: l.append(’a’) // 增加了一個(gè)一個(gè)元素后,給列表分配了72字節(jié)的內(nèi)存,一個(gè)字符8個(gè)字節(jié)// 那就是一次性分配了4個(gè)字符的內(nèi)存空間In [26]: l.__sizeof__()Out[26]: 72In [27]: l.append(’b’) // 再增加字符,占用內(nèi)存不變In [28]: l.__sizeof__()Out[28]: 72In [29]: l.append(’c’) // 再增加字符,占用內(nèi)存不變In [30]: l.__sizeof__()Out[30]: 72In [31]: l.append(’d’) // 再增加字符,占用內(nèi)存不變In [32]: l.__sizeof__()Out[32]: 72In [33]: l.append(’e’) // 再添加元素,內(nèi)存不夠,觸發(fā)重新的內(nèi)存分配In [34]: l.__sizeof__()Out[34]: 104

可以看出list為了能夠?qū)崟r(shí)追蹤內(nèi)存的使用情況,當(dāng)空間不足時(shí)以及分配額外空間,額外的多分配了內(nèi)存,而且還需要存儲(chǔ)指針,指向?qū)?yīng)的元素。

我們可以看到,為了減小每次增加 / 刪減操作時(shí)空間分配的開(kāi)銷,Python 每次分配空間時(shí)都會(huì)額外多分配一些,這樣的機(jī)制(over-allocating)保證了其操作的高效性:增加 / 刪除的時(shí)間復(fù)雜度均為 O(1)。但是對(duì)于元組,情況就不同了。元組長(zhǎng)度大小固定,元素不可變,所以存儲(chǔ)空間固定。

所以說(shuō)在存儲(chǔ)大量的數(shù)據(jù)的時(shí)候,這種差異是需要考慮的,如果數(shù)據(jù)發(fā)生變更的可能性不大,就用元組存儲(chǔ),如果數(shù)據(jù)是需要頻繁的進(jìn)行數(shù)據(jù)的修改增加,就使用列表

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 久久中文字幕制服丝袜美腿 | 免费二级c片在线观看a | 免费国产在线观看不卡 | 久久久久免费精品国产小说 | 久久久久免费精品国产 | 黄色大片在线观看 | 广东毛片 | 香蕉免费一级视频在线观看 | 精品国产中文字幕 | 中文字幕在线永久视频 | 日韩精品视频在线 | 国产亚洲美女精品久久久2020 | 午夜不卡av免费 | 国产美女视频一区二区二三区 | 亚洲精品在线免费看 | 台湾小明看看 | 亚洲国产天堂在线网址 | 边做边摸边揉的免费视频 | 亚洲精品久久精品h成人 | 欧美成人午夜影院 | 欧美黄a | 男女啪啪免费体验区 | 国产精品白嫩在线观看 | 青青草精品在线视频 | 国产午夜免费视频片夜色 | 国产精品亚洲欧美日韩区 | 国产精品亚洲精品日韩己满十八小 | 一级黄色大片免费观看 | 欧美高清在线视频一区二区 | 美国人妖欧美性xxxxk妖 | 久草视频在线首页 | 国产成人精品午夜 | 91中文字幕在线一区 | 成人免费毛片一区二区三区 | 国产一级精品高清一级毛片 | a级特黄毛片免费观看 | 美女一区二区在线观看 | 国产伦精品一区二区三区免费迷 | 亚洲精品一区二区三区不卡 | 国产香港特级一级毛片 | 大陆精品偷拍视频在线播放 |