1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      python中元組和列表有什么區(qū)別

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

      創(chuàng)新互聯(lián)建站主要從事做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)東乃,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108

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

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

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

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

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

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

      列表可被用于保存多個(gè)互相獨(dú)立對(duì)象的數(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ù)來(lái)增加其大小:

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

      三、元組(Tuple)

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

      >>> t = (1, 2, 3, 4)
      >>> t[0] = 5
      Traceback (most recent call last):
        File "", line 1, in 
      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)閷?duì)元組每添加一個(gè)新元素都會(huì)有分配和復(fù)制操作,而不是像列表那樣僅在額外的空間耗盡時(shí)發(fā)生。所以元組并沒(méi)有提供一個(gè)類似append的自增操作,任意兩個(gè)元組相加始終返回一個(gè)新分配的元組。

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

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

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

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

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

      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ì)很快的累加起來(lái)。

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


      當(dāng)前標(biāo)題:python中元組和列表有什么區(qū)別
      本文路徑:http://www.ef60e0e.cn/article/pjossd.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        乐安县| 永平县| 多伦县| 荔浦县| 田阳县| 江华| 马龙县| 天门市| 修文县| 长汀县| 永善县| 广丰县| 扶风县| 峨眉山市| 丰镇市| 广汉市| 平顺县| 盘锦市| 茂名市| 岑巩县| 青神县| 陆良县| 福鼎市| 墨玉县| 黎城县| 略阳县| 洛阳市| 丰台区| 尉犁县| 芜湖县| 大埔区| 惠东县| 靖边县| 离岛区| 祁门县| 桂平市| 吐鲁番市| 环江| 普安县| 柳河县| 双江|