久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  技術(shù)干貨  > Python應(yīng)用之多變量的靈活處理

        Python應(yīng)用之多變量的靈活處理

        來源:千鋒教育
        發(fā)布人:xqq
        時(shí)間: 2023-11-07 12:29:09 1699331349

        我們都知道Python是一個(gè)非常靈活的語言,以至于如果它不是你的第一門語言,你會(huì)發(fā)現(xiàn)它總能給你各種各樣的驚喜,讓你忍不住驚嘆:woc,還有這種操作。尤其我在系統(tǒng)地學(xué)習(xí)Python之前是Java后端出身,所以每一階段幾乎都會(huì)讓我覺得打開了新世界的大門。今天就和大家介紹一個(gè)最基礎(chǔ),非常好用,但是很多人不知道的操作。

        解壓變量

        我們都知道,Python允許進(jìn)行多個(gè)變量的賦值操作,比如著名的交換兩個(gè)元素,如果是在C++或者Java語言當(dāng)中,如果不通過函數(shù)實(shí)現(xiàn),必須要引入第三個(gè)變量,比如:

        #swapa,b

        c=a

        a=b

        b=c

        我們要交換a和b必須要引入c,這是因?yàn)楫?dāng)我們賦值b給a的時(shí)候,a原本的值會(huì)丟失,所以我們必須要先”緩存“下來。但是由于Python支持多變量賦值的操作,所以大可不必引入其他變量就可以完成,所以交換兩個(gè)元素在Python當(dāng)中只有一行就可以搞定:

        a,b=b,a

        Python的解釋器會(huì)直接計(jì)算后邊的值然后覆蓋左邊,賦值是同時(shí)進(jìn)行的,所以不需要引入其他變量,而且看起來也非常geek。

        除此之外,Python還支持tuple和list的解壓。

        舉個(gè)例子,假設(shè)我們有一個(gè)二元數(shù)組:[1,2],我們希望用兩個(gè)變量分別獲取它的第0位和第一位,我們當(dāng)然可以寫成這樣:

        l=[1,2]

        a,b=l[0],l[1]

        其實(shí)并不用這么麻煩,因?yàn)楫?dāng)Python檢測到等號左邊是多個(gè)變量,右邊是list或者是tuple之后,會(huì)自動(dòng)執(zhí)行l(wèi)ist和tuple的解壓,將它依次賦值給對應(yīng)的元素,所以上面的代碼可以簡化成:

        l=[1,2]

        a,b=l

        那如果l是一個(gè)二維數(shù)組,我們希望遍歷它呢?同樣可以在循環(huán)當(dāng)中使用:

        l=[[1,2],[3,4],[5,6]]

        fori,jinl:

        print(i,j)

        即使是在變量的組合當(dāng)中也可以生效:

        a,b,c=1,3,(4,5)

        print(c)

        當(dāng)我們執(zhí)行這段代碼,屏幕上會(huì)輸出什么呢?是會(huì)報(bào)錯(cuò)嗎?還是會(huì)解壓(4,5)這個(gè)tuple然后將4賦值給c呢?

        都不對,輸出的結(jié)果是(4,5),也就是說Python發(fā)現(xiàn)變量數(shù)量對不上之后,會(huì)自動(dòng)將tuple當(dāng)做一個(gè)整體進(jìn)行賦值。不但如此,即使是下面這種情況,Python也能自動(dòng)識(shí)別:

        a,b,(c,d),e=1,3,(4,5),7

        print(c,d)

        在上面的賦值當(dāng)中,既有tuple又有普通元素,并且我們的變量也組合成了tuple,這時(shí)Python同樣會(huì)識(shí)別出(4,5)應(yīng)該賦值給(c,d)這個(gè)整體,也就是說4和5分別賦值給c和d。

        缺省元素

        在有的時(shí)候,我們在獲取元素的時(shí)候,源數(shù)據(jù)當(dāng)中有我們不需要的字段。雖然Python自動(dòng)解壓非常方便,但是我們還是要為我們不需要的數(shù)據(jù)設(shè)置變量。在一些情況下這會(huì)導(dǎo)致內(nèi)存的浪費(fèi),并且這也不符合我們編程的規(guī)范,即所有變量都應(yīng)該派上用場。為了解決這個(gè)問題,Python提供缺省元素的方法。我們可以使用_來代表一個(gè)缺省值,_對應(yīng)的數(shù)據(jù)不會(huì)被存儲(chǔ)下來,只是為了方便我們”湊齊“元素。

        舉個(gè)例子,還用上面的例子舉例,假設(shè)源數(shù)據(jù)的格式是這樣:1,3,(4,5),7,但是我們只需要中間的元組,我們就可以這樣去接收:

        _,_,(c,d),_=1,3,(4,5),7

        再比如,當(dāng)我們遍歷dict的時(shí)候,有可能我們并不關(guān)注dict的key,只希望獲得它的value,這個(gè)時(shí)候也可以使用缺省符號:

        a={}

        for_,vina.items():

        print(v)

        壓縮變量

        既然變量可以解壓,那么自然也可以壓縮。想象一個(gè)場景,比如有一批衡量工廠零件的數(shù)據(jù),這個(gè)數(shù)據(jù)當(dāng)中除了零件的尺寸之外還包含了零件的名稱,生產(chǎn)日期和工廠名稱等等其他的屬性。假設(shè)我們當(dāng)下希望解析這份數(shù)據(jù),并且將零件的尺寸用數(shù)組存儲(chǔ),這個(gè)時(shí)候應(yīng)該怎么辦呢?

        比如,零件的數(shù)據(jù)的規(guī)格長這樣:wheel,factory1,3,4,5,6,2020-02-02

        Python同樣針對這個(gè)問題提供了解決方法,就是變量壓縮符*,針對上面那個(gè)問題,我們可以寫成:

        data=['wheel','factory1',3,4,5,6,'2020-02-02']

        name,factory,*inch,date=data

        print(inch)

        最后我們打印出來的inch是[3,4,5,6],也就是說通過使用*,我們成功地將中間表示零件尺寸的數(shù)據(jù)賦值進(jìn)了一個(gè)數(shù)組當(dāng)中。這個(gè)操作非常重要,因?yàn)橛锌赡懿煌慵叽绲臄?shù)量是不同的,如果我們自己寫解析的話就很難處理這個(gè)問題。而使用Python當(dāng)中的*操作符,我們可以很好地解決這個(gè)問題。

        聯(lián)合使用

        到這里,我們介紹了缺省符號的用法,介紹了壓縮符號的用法,問題來了,我們能不能將這兩個(gè)符號組合使用,獲取數(shù)據(jù)當(dāng)中任意個(gè)缺省值呢?

        當(dāng)然是可以的,還是剛才的問題,假設(shè)我們現(xiàn)在不關(guān)心零件的尺寸,想要過濾掉它們,我們只要對上面的代碼稍作改動(dòng)即可:

        data=['wheel','factory1',3,4,5,6,'2020-02-02']

        name,factory,*_,date=data

        如此我們就過濾掉了中間若干個(gè)尺寸信息,僅僅保留了頭尾其他的信息。

        其他用途

        到這里還沒結(jié)束,不知道大家在看到*這個(gè)操作符號的時(shí)候有沒有什么聯(lián)想,如果稍稍了解過Python的話,應(yīng)該會(huì)想起Python當(dāng)中,如果我們想讓一個(gè)函數(shù)接收任何參數(shù)的話,我們可以寫成:

        deffunc(*args,**kw):

        pass

        其中args其實(shí)代表一個(gè)數(shù)組,kw代表一個(gè)dict,這些我們都是知道的。但是前面的*和**呢,又代表什么呢?

        代表解壓數(shù)組,*自然就代表解壓dict。我們來看個(gè)例子:

        a=[1,3,5]

        print(a)

        print(*a)

        以上內(nèi)容為大家介紹了Python應(yīng)用之多變量的靈活處理,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/


        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
        免費(fèi)領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        沅陵县| 宜君县| 惠水县| 宜良县| 临朐县| 奉贤区| 鱼台县| 西盟| 包头市| 裕民县| 永泰县| 腾冲县| 理塘县| 府谷县| 长岛县| 密山市| 上虞市| 山丹县| 玉溪市| 石门县| 西宁市| 哈密市| 焦作市| 汝城县| 天水市| 布尔津县| 当涂县| 桦南县| 邮箱| 平远县| 吴堡县| 喀喇沁旗| 巴彦淖尔市| 靖安县| 衡南县| 鹤山市| 酒泉市| 卢龙县| 孟津县| 迁西县| 衡阳市|