成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

python中元組和列表有什么區(qū)別-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

站在用戶的角度思考問題,與客戶深入溝通,找到沈河網(wǎng)站設(shè)計(jì)與沈河網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋沈河地區(qū)。

python中元組和列表的有什么區(qū)別?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

Python列表和元組的詳細(xì)區(qū)別

一、列表和元組的區(qū)別

列表是動(dòng)態(tài)數(shù)組,它們不可變且可以重設(shè)長度(改變其內(nèi)部元素的個(gè)數(shù))。

元組是靜態(tài)數(shù)組,它們不可變,且其內(nèi)部數(shù)據(jù)一旦創(chuàng)建便無法改變。

元組緩存于Python運(yùn)行時(shí)環(huán)境,這意味著我們每次使用元組時(shí)無須訪問內(nèi)核去分配內(nèi)存。

這些區(qū)別結(jié)實(shí)率兩者在設(shè)計(jì)哲學(xué)上的不同:

列表可被用于保存多個(gè)互相獨(dú)立對象的數(shù)據(jù)集合

元組用于描述一個(gè)不會(huì)改不安的事務(wù)的多個(gè)屬性

列表一旦創(chuàng)建了我們就可以根據(jù)自己的需要隨意改變它的內(nèi)容:

>>> l = [1, 2, 3, 4, 5, 6]
>>> l[0] = l[2] * l[3]
>>> l
[12, 2, 3, 4, 5, 6]

另外我們可以給列邊添加新的數(shù)據(jù)來增加其大?。?/p>

>>> len(l)
6
>>> l.append(7)
>>> l
[12, 2, 3, 4, 5, 6, 7]
>>> len(l)

這是因?yàn)閯?dòng)態(tài)數(shù)組支持resize操作,可以增加數(shù)組的容量。當(dāng)一個(gè)大小為N的列表第一次需要添加數(shù)據(jù)時(shí),Python會(huì)創(chuàng)建一個(gè)新的列表,足夠放原來的N個(gè)元素以及額外添加的元素。不過,實(shí)際分配的并不是N+1個(gè)元素,而是M個(gè)元素,M > N, 這是為了給未來的添加預(yù)留空間。然后舊列表的數(shù)據(jù)被復(fù)制到新列表中,舊列表則會(huì)被銷毀。從設(shè)計(jì)理念上來說,第一次添加可能是后續(xù)多次添加的開始,通過預(yù)留空間的做法,我們就可以減少這一分配空間的操作次數(shù)以及內(nèi)存復(fù)制的次數(shù)。這點(diǎn)非常重要,因?yàn)閮?nèi)存復(fù)制可能非常的昂貴,特別是當(dāng)列表大小開始增長以后。

三、元組(Tuple)

元組是固定且不可改變的。這意味著一旦元組被創(chuàng)建,和列表不同,它的內(nèi)容無法被修改或它的大小也無法被改變。

>>> t = (1, 2, 3, 4)
>>> t[0] = 5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

雖然它們不支持改變大小,但是我們可以將兩個(gè)元組合并成一個(gè)新元組。這一操作類似列表的resize操作,但我們不需要為新生的元組分配任何額外的空間:

>>> t1 = (1, 2, 3, 4)
>>> t2 = (5, 6, 7, 8)
>>> t1 + t2
(1, 2, 3, 4, 5, 6, 7, 8)

如果我們將其與列表的append操作比較,我們會(huì)看到它的復(fù)雜度是O(n)而不是列表的O(1)。這是因?yàn)閷υM每添加一個(gè)新元素都會(huì)有分配和復(fù)制操作,而不是像列表那樣僅在額外的空間耗盡時(shí)發(fā)生。所以元組并沒有提供一個(gè)類似append的自增操作,任意兩個(gè)元組相加始終返回一個(gè)新分配的元組。

該網(wǎng)站為Python Tutor,一個(gè)能夠?qū)ython運(yùn)行內(nèi)存可視化的網(wǎng)站,非常適合初學(xué)者研究,在運(yùn)行過程中內(nèi)存發(fā)生了什么。

元組的靜態(tài)特性的另一個(gè)好處體現(xiàn)在一些會(huì)在Python后臺(tái)發(fā)生的事情:資源緩存。

Python是一門垃圾收集語言,這意味著當(dāng)一個(gè)變量不再被使用時(shí),Python會(huì)將該變量使用的內(nèi)存釋放回操作系統(tǒng),以供其他程序(變量)使用。然而,對于長度為1~20的元組,即使它們不在被使用,它們的空間也不會(huì)立刻還給系統(tǒng),而是留待未來使用。這意味著當(dāng)未來需要一個(gè)同樣大小的新的元組時(shí),我們不再需要向操作系統(tǒng)申請一塊內(nèi)存來存放數(shù)據(jù),因?yàn)槲覀円呀?jīng)有了預(yù)留的空間。

這看上去可能是個(gè)細(xì)微的好處,但是實(shí)際上是元組一個(gè)很神奇的地方:它們可以被輕松快速地創(chuàng)建,因?yàn)樗鼈兛梢员苊飧僮飨到y(tǒng)頻繁的打交道,而后者會(huì)花很長的時(shí)間。

下面舉個(gè)例子會(huì)非常直觀的說明問題

In [1]: %timeit l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
93.7 ns ± 3.33 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
In [2]: %timeit t = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
18.5 ns ± 1.19 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

上面的示例中顯示了初始化一個(gè)列表比初始化一個(gè)元組慢了5.1倍——如果這是在一個(gè)循環(huán)中,這點(diǎn)差別會(huì)很快的累加起來。

看完上述內(nèi)容,你們掌握python中元組和列表的有什么區(qū)別的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

新聞名稱:python中元組和列表有什么區(qū)別-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://jinyejixie.com/article8/gphop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、虛擬主機(jī)、App設(shè)計(jì)、商城網(wǎng)站、Google、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
潍坊市| 岳普湖县| 奉化市| 介休市| 贡嘎县| 长春市| 永安市| 黄骅市| 和龙市| 德庆县| 吉安县| 兴化市| 安西县| 阿坝县| 高邮市| 区。| 周至县| 思南县| 寿光市| 阿鲁科尔沁旗| 巴彦淖尔市| 大庆市| 廉江市| 绥棱县| 西安市| 台湾省| 农安县| 平湖市| 恩施市| 苍梧县| 华阴市| 大洼县| 沙河市| 临西县| 清原| 朝阳区| 伊春市| 青田县| 额济纳旗| 寻乌县| 合肥市|