乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      趣味的Python解包方法

       靜幻堂 2018-08-15
      汕頭各地 2018-08-14 19:15:30

      python中的解包你可以這個樣子來理解:一個list是一個整體,想把list中的每一個元素都當(dāng)成一個個個體剝離出來,這樣的一個過程就是解包,讓我們先來看下面的這一些例子(總共分為12個部分)。

      1.將list的每一個元素都賦值給一個變量

      >>> name

      'Bob'

      >>> age

      20

      >>> date

      趣味的Python解包方法

      >>> name, age, date = ['Bob', 20, '2018-1-1']

      2.可迭代的對象都可以這個樣子來做

      >>> a,b,c = ['a', 'b', 'c']

      >>> a

      'a'

      >>> a,b,c = enumerate(['a', 'b', 'c'])

      >>> a

      (0, 'a')

      # 元組

      >>> a,b,c = ('a', 'b', 'c')

      >>> a

      'a'

      # 字典

      >>> a,b,c = {'a':1, 'b':2, 'c':3}

      >>> a

      'a'

      >>> a,b,c = {'a':1, 'b':2, 'c':3}.items()

      >>> a

      ('a', 1)

      # 字符串

      >>> a,b,c = 'abc'

      >>> a

      'a'

      # 生成器

      >>> a,b,c = (x + 1 for x in range(3))

      >>> a

      趣味的Python解包方法

      趣味的Python解包方法

      # 列表

      如果可迭代對象包含的元素和前面待賦值變量數(shù)量不一致,則會報錯。但是可以通過*來表示多個元素

      3.星號的使用方法

      比如我們想要計算一個平均分,先去除最高分和最低分,我們除了可以用切片以外,還可以使用解包的方式獲得中間的數(shù)值

      >>> new

      趣味的Python解包方法

      >>> first, *new, last = [94, 85, 73, 46]

      用*來表示多個數(shù)值

      4.壓包過程

      壓包就是解包的逆過程,使用zip函數(shù)來實現(xiàn),下面的例子可以讓你對壓包有比較一個直觀的感受

      >>> b = [1, 2, 3]

      >>> for i in zip(a, b):

      ... print(i)

      ...

      ('a', 1)

      ('b', 2)

      趣味的Python解包方法

      >>> a = ['a', 'b', 'c']

      5.壓包與解包混合的例子

      下面的這個例子實現(xiàn):兩個列表對應(yīng)數(shù)值相加

      >>> b = [1, 2, 3]

      >>> for i, j in zip(a, b):

      ... print(i+j)

      ...

      1

      3

      趣味的Python解包方法

      >>> a = [0, 1, 2]

      細(xì)細(xì)拆解上面過程,可以看出步驟是這樣的

      • 先是zip函數(shù)將a b壓包成為一個可迭代對象對可迭代對象的每一個元素(('a', 1))進行解包(i, j = ('a', 1))此時就可以分別調(diào)用i j變量進行計算

      下面我們加入星號

      ... ('Mary', '1996-1-4', 50),

      ... ('Nancy', '1993-3-1', 55),]

      >>> for name, *args in l:

      ... print(name, args)

      ...

      Bob ['1990-1-1', 60]

      Mary ['1996-1-4', 50]

      趣味的Python解包方法

      >>> l = [('Bob', '1990-1-1', 60),

      6._的使用方法

      當(dāng)有一些元素你不想用時,使用_表示是更好的寫法了,這樣就可以讓讀代碼的人知道這個元素是不person = ('Bob', 20, 50, (11, 20, 2000))要的

      >>> name, *_, (*_, year) = person

      >>> name

      'Bob'

      >>> year

      趣味的Python解包方法

      >>> person = ('Bob', 2, 50, (11, 20, 2000))

      7.多變量同時賦值

      之前的賦值符號右側(cè)都是可迭代對象,其實>>> a, b = 側(cè)也可以多個變量

      >>> a

      1

      >>> b

      2

      >>> a = 1, 2

      >>> a

      趣味的Python解包方法

      >>> a, b = 1, 2

      下面的使用方法都會報錯

      趣味的Python解包方法

      *a = 1, 2

      可以這樣

      趣味的Python解包方法

      8.*之可變參數(shù)

      在定義函數(shù)時,我們使用*的可變參數(shù),其實也是壓包解包過程

      ... print(num)

      ...

      >>> myfun(1,2,5,6)

      趣味的Python解包方法

      >>> def myfun(*num):

      參數(shù)用*num表示,num變量就可以當(dāng)成元組調(diào)用了。

      其實這個過程相當(dāng)于*num, = 1,2,5,6

      9.*之關(guān)鍵字參數(shù)

      ... print(kw)

      ...

      >>> myfun(name = "Bob", age = 20, weight = 50)

      {'weight': 50, 'name': 'Bob', 'age': 20}

      鍵值對傳入**kw,kw就可以表示相應(yīng)字典。

      **的用法只在函數(shù)定義中使用,不能這樣使用

      趣味的Python解包方法

      >>> def myfun(**kw):

      10.可變參數(shù)與關(guān)鍵字參數(shù)的細(xì)節(jié)問題

      1.函數(shù)傳入實參時,可變參數(shù)(*)之前的參數(shù)不能指定參數(shù)名

      ... print(a)

      ... print(b)

      ...

      >>> myfun(a=1, 2,3,4)

      File "<stdin>", line 1

      SyntaxError: positional argument follows keyword argument

      >>> myfun(1, 2,3,4)

      1

      趣味的Python解包方法

      >>> def myfun(a, *b):

      2.當(dāng)函數(shù)傳入實參時,可變參數(shù)(*)之后的參數(shù)必須指定參數(shù)名,否則就會被歸入到可變參數(shù)之中

      ... print(a)

      ... print(b)

      ... print(c)

      ...

      >>> myfun(1, 2,3,4)

      1

      (2, 3, 4)

      None

      >>> myfun(1, 2,3,c=4)

      1

      (2, 3)

      趣味的Python解包方法

      趣味的Python解包方法

      >>> def myfun(a, *b, c=None):

      如果一個函數(shù)想要使用的時候必須明確指定參數(shù)名,可以將所有參數(shù)都放在可變參數(shù)之后,而可變參數(shù)不用管它就可以,也不用命名,如下

      ... print(a)

      ... print(b)

      ...

      >>> myfun(a = 1,b = 2)

      1

      趣味的Python解包方法

      >>> def myfun(*, a, b):

      可變參數(shù)的這兩條特性,可以用于將 只需要按照位置賦值的參數(shù) 和 需要明確指定參數(shù)名的參數(shù)區(qū)分開來

      3.關(guān)鍵字參數(shù)都只能作為最后一個參數(shù),前面的參數(shù)按照位置賦值還是名稱賦值都可以

      下面展示一個既用可變參數(shù)有用關(guān)鍵字參數(shù)的例子

      ... print(a)

      ... print(b)

      ... print(c)

      ... print(d)

      ...

      >>> myfun(1, 2, 3, c= 4, m = 5, n = 6)

      1

      (2, 3)

      4

      趣味的Python解包方法

      >>> def myfun(a, *b, c, **d):

      4.可變參數(shù)與關(guān)鍵詞參數(shù)共同使用以表示任意參數(shù)4下面是這一點在裝飾器當(dāng)中的使用

      ... def wrapper(*args, **kw):

      ... print('I am using a decorator.')

      ... return func(*args, **kw)

      ... return wrapper

      ...

      >>> @mydecorator

      ... def myfun(a, b):

      ... print(a)

      ... print(b)

      ...

      >>> myfun(1, b = 2)

      I am using a decorator.

      1

      趣味的Python解包方法

      趣味的Python解包方法

      >>> def mydecorator(func):

      (如果有的讀者不熟悉裝飾器,只需要知道,使用@定義myfun相當(dāng)于myfun = mydecorator(myfun),定義出來的myfun其實是返回結(jié)果wrapper函數(shù))

      wrapper函數(shù)使用*args, **kw作為參數(shù),則被修飾的myfun函數(shù)需要的參數(shù)無論是什么樣的,傳入wrapper都不會報錯,這保證了裝飾器可以修飾各種各樣函數(shù)的靈活性。畢竟我們一般在函數(shù)中傳入?yún)?shù)時,要么所有參數(shù)名都寫,要么前面幾個不寫,后面的會寫,這樣使用*args, **kw完全沒有問題。

      11.解包作為參數(shù)傳入函數(shù)中

      首先定義一個函數(shù)

      趣味的Python解包方法

      def myfun(a, b):

      列表元組的解包

      >>> myfun(*n)

      3

      >>> m = (1, 2)

      >>> myfun(*m)

      趣味的Python解包方法

      >>> n = [1, 2]

      字典的解包

      >>> myfun(**mydict)

      3

      >>> myfun(*mydict)

      趣味的Python解包方法

      >>> mydict = {'a':1, 'b': 2}

      一個應(yīng)用

      >>> "{name}'s age is {age}".format(**bob)

      趣味的Python解包方法

      >>> bob = {'name': 'Bob', 'age': 30}

      12.多返回值函數(shù)

      下面過程也涉及到了解包

      return a + 1, b + 2

      >>> m, n = myfun(1, 2)

      >>> m

      2

      >>> n

      趣味的Python解包方法

      def myfun(a, b):

      其實本身是一個元組

      趣味的Python解包方法

      Python學(xué)習(xí)交流群:834+179+111,群里有很多的學(xué)習(xí)資料。歡迎歡迎各位前來交流學(xué)習(xí)。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多