從乙個例子看Python3 x中序列解包

2021-08-10 16:39:44 字數 1600 閱讀 3119

假如乙個字串'abcdefgh',要輸出下列格式:

即: 每次取出第乙個作為首,然後的字串拆成列表,放置在後面,最後成上面的輸出:

一般的處理是:

>>> s = 'abcdefgh'

>>> while s:

front, s = s[0], list(s[1:])

print(front, s)

a ['b', 'c', 'd', 'e', 'f', 'g', 'h']

b ['c', 'd', 'e', 'f', 'g', 'h']

c ['d', 'e', 'f', 'g', 'h']

d ['e', 'f', 'g', 'h']

e ['f', 'g', 'h']

f ['g', 'h']

g ['h']

h

備註:1.將切片中索引為0的字元賦值給front

2.將切片中索引為1之後字元再賦值給s

3.用list函式將字串轉變為列表

4.用while迴圈來s來判斷,為空,則退出迴圈

上面的處理,可以用序列解包的方法會來處理,並好理解。 序列解包是python 3.0之後出現,之前的版本一般賦值的時候,一定要對等,才能正常賦值,比如說:

>>> a, b, c = (1, 2, 3)

>>> a, c

(1, 3)

>>> [a, b, c] = (1, 2, 3)

>>> a, c

(1, 3)

>>> a, b, c = 'son' # 剛好三個字元的字串

>>> a, c

('s', 'n')

如果是不對等的情況下,是會報錯的: too many values to unpack
>>> a, b = 'son'

traceback (most recent call last):

file "", line 1, in a, b = 'son'

valueerror: too many values to unpack (expected 2)

3.0出現了解包,一切就簡單多了,如果我不之後字元有多少個時候,都可以如此:
>>> a, *b = 'book'

>>> a, b

('b', ['o', 'o', 'k'])

>>> *a, b = 'book'

>>> a, b

(['b', 'o', 'o'], 'k')

上面就是序列解包,在賦值時無疑更方便,適用性更強!運用序列解包的功能重寫上面的**:

從上面可以看出: **更簡潔,也更好理解了!

Express高階 從乙個例子看路由分組機制

路由是express的核心功能。本文通過乙個簡單例子,介紹express的路由分組機制,以及next route 的正確使用方法。使用過express的同學都知道,通過next 將 執行權轉移到下乙個中介軟體 例子略 在官網有下面例子,出現了next route 的呼叫 a middleware s...

從乙個例子說為什麼要用介面

如題,看看下面這個例子 現有狗 和企鵝兩個類 狗會玩飛碟,企鵝會游泳,為什麼要把玩飛碟和游泳的方法分別定義在兩個介面裡?如果 定義在介面反而顯得 更加累贅,因為還多了兩個介面。你可能會想,幹嘛不直接把玩飛碟的方法直接定義在狗類中,游泳 的方法直接定義在企鵝類中 這種情況下沒有父類 假設這樣一種情況 ...

python3執行緒加鎖的乙個例子

再這個例子中,執行緒加上鎖之後有並行變成了實際上的序列 root linux1 python tidb cat mypy02.py usr bin env python3 import pymysql,sys,os import thread,time def counter myid,count ...