<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          10 個 pythonic 的“語法糖”

          共 515字,需瀏覽 2分鐘

           ·

          2020-08-29 13:51



          眾所周知,Python 以語法簡潔著稱,同樣實(shí)現(xiàn)一個功能,C++/Java 可能要十來行,Python 可能一行就可以搞定。

          Python 的代碼之所以這么優(yōu)雅,歸功于其獨(dú)有的特性,以及一些非常好用的“語法糖”。所謂“語法糖”,指的是一些可以讓代碼更簡潔、更具可讀性的語法。掌握了這些,也可以寫出像詩一樣的代碼。

          下面我們就一起看看 Python 中的幾個“語法糖”。

          0x00 Hello World

          對于大部分程序員來說,第一個程序應(yīng)該都是 "Hello World!" 了,Python 直接將該入門程序做成了一個包。

          In?[1]:?import?__hello__
          Hello?world!

          0x01 交換變量

          一行代碼搞定變量交換,無需臨時變量,也無需異或操作。

          In?[1]:?x,y?=?y,x

          0x02 變量比較

          對于變量的連續(xù)比較,Python 是支持的比較好的。

          In?[24]:?x?=?10

          In?[25]:?5?20
          Out[25]:?True

          In?[26]:?11?20
          Out[26]:?False

          0x03 列表推導(dǎo)式

          In?[2]:?list?=?list(range(10))
          #?取偶數(shù)
          In?[3]:?even?=?[x?for?x?in?list?if?x?%?2?==?0]

          In?[4]:?even
          Out[4]:?[0,?2,?4,?6,?8]

          0x04 合并字符串

          很多語言合并字符串大都是通過 + 號來實(shí)現(xiàn)的,但由于字符串的不可變性,不斷合并后的字符串會不斷的申請新的內(nèi)存。

          In?[5]:?x?=?['a',?'b',?'c',?'d',?'e',?'f',?'g']

          In?[6]:?''.join(x)
          Out[6]:?'abcdefg'

          0x05 列表切片

          In?[2]:?x
          Out[
          2]:?[0,?1,?2,?3,?4,?5,?6,?7,?8,?9]

          #?取索引為?2?到?8?的值,步長為?2
          In?[
          4]:?x[2:8:2]
          Out[
          4]:?[2,?4,?6]

          #?步長為負(fù)值,示從后面取值
          In?[
          6]:?x[::-2]
          Out[
          6]:?[9,?7,?5,?3,?1]

          0x06 反轉(zhuǎn)字符串

          In?[7]:?x?=?'Hello?Python!'

          In?[8]:?x[::-1]
          Out[8]:?'!nohtyP?olleH'

          0x07 同時獲取下標(biāo)和值

          x?=?list(range(10))
          for?index,?value?in?enumerate(x):
          ????print(index,?value)

          0x08 zip()函數(shù)

          In?[7]:?a?=?[1,2,3]

          In?[8]:?b?=?[4,5,6]

          In?[9]:?c?=?[7,8,9]

          In?[16]:?list(zip(a,?b,?c))
          Out[16]:?[(1,?4,?7),?(2,?5,?8),?(3,?6,?9)]

          #?逆操作
          In?[18]:?zz?=?(zip(a,?b,?c))

          In?[19]:?x,?y,?z?=?zip(*zz)

          In?[20]:?x,y,z
          Out[20]:?((1,?2,?3),?(4,?5,?6),?(7,?8,?9))

          #?合并列表相鄰項(xiàng)
          In?[22]:?a?=?[1,?2,?3,?4,?5,?6]

          In?[23]:?list(zip(a[::2],?a[1::2]))
          Out[23]:?[(1,?2),?(3,?4),?(5,?6)]

          0x09 閉包

          def?outer(x):
          ????def?inner(y):
          ????????#?在內(nèi)函數(shù)中?用到了外函數(shù)的變量
          ????????nonlocal?x
          ????????x?+=?y
          ????????return?x?+?y

          ????#?外函數(shù)的返回值是內(nèi)函數(shù)的引用
          ????return?inner

          fun?=?outer(10)

          print(fun(10))?#?30
          print(fun(10))?#?40
          print(fun(10))?#?50

          總結(jié)

          今天給大家分享了一些 Python 的“語法糖”,或許你也可以把它們用在你的代碼里,讓你的代碼更加 pythonic!

          類似的 python 小技巧還有很多,歡迎大家留意補(bǔ)充。

          作者:派森醬
          來源:Python 技術(shù)(pythonall)

          _往期文章推薦_

          一行Python代碼能實(shí)現(xiàn)什么奇葩功能?




          瀏覽 35
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美性爱网站操 | 国产麻豆成人传媒免费观看 | 午夜成人免费视频 | 色噜噜人妻av中文字幕 | 毛毛毛毛毛毛毛片123 |