91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構

      手機站
      千鋒教育

      千鋒學習站 | 隨時隨地免費學

      千鋒教育

      掃一掃進入千鋒手機站

      領取全套視頻
      千鋒教育

      關注千鋒學習站小程序
      隨時隨地免費學習課程

      當前位置:首頁  >  技術干貨  > Python應用之多變量的靈活處理

      Python應用之多變量的靈活處理

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

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

      解壓變量

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

      #swapa,b

      c=a

      a=b

      b=c

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

      a,b=b,a

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

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

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

      l=[1,2]

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

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

      l=[1,2]

      a,b=l

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

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

      fori,jinl:

      print(i,j)

      即使是在變量的組合當中也可以生效:

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

      print(c)

      當我們執(zhí)行這段代碼,屏幕上會輸出什么呢?是會報錯嗎?還是會解壓(4,5)這個tuple然后將4賦值給c呢?

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

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

      print(c,d)

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

      缺省元素

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

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

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

      再比如,當我們遍歷dict的時候,有可能我們并不關注dict的key,只希望獲得它的value,這個時候也可以使用缺省符號:

      a={}

      for_,vina.items():

      print(v)

      壓縮變量

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

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

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

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

      name,factory,*inch,date=data

      print(inch)

      最后我們打印出來的inch是[3,4,5,6],也就是說通過使用*,我們成功地將中間表示零件尺寸的數(shù)據(jù)賦值進了一個數(shù)組當中。這個操作非常重要,因為有可能不同零件尺寸的數(shù)量是不同的,如果我們自己寫解析的話就很難處理這個問題。而使用Python當中的*操作符,我們可以很好地解決這個問題。

      聯(lián)合使用

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

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

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

      name,factory,*_,date=data

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

      其他用途

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

      deffunc(*args,**kw):

      pass

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

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

      a=[1,3,5]

      print(a)

      print(*a)

      以上內(nèi)容為大家介紹了Python應用之多變量的靈活處理,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.jsszjs.cn/


      tags: python培訓
      聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
      10年以上業(yè)內(nèi)強師集結,手把手帶你蛻變精英
      請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
      免費領取
      今日已有369人領取成功
      劉同學 138****2860 剛剛成功領取
      王同學 131****2015 剛剛成功領取
      張同學 133****4652 剛剛成功領取
      李同學 135****8607 剛剛成功領取
      楊同學 132****5667 剛剛成功領取
      岳同學 134****6652 剛剛成功領取
      梁同學 157****2950 剛剛成功領取
      劉同學 189****1015 剛剛成功領取
      張同學 155****4678 剛剛成功領取
      鄒同學 139****2907 剛剛成功領取
      董同學 138****2867 剛剛成功領取
      周同學 136****3602 剛剛成功領取
      相關推薦HOT