Python3 序列解包

2022-06-12 11:24:11 字數 2728 閱讀 1294

**自:

序列解包是 python 3.0 之後才有的語法

什麼是序列解包呢?先看乙個例子:

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

>>>a

1>>>b

2>>>c

3>>>

這種方法並不限於列表和元組,而是適用於任意序列型別(甚至包括字串和位元組序列)。只要賦值運算子左邊的變數數目與序列中的元素數目相等,

你都可以用這種方法將元素序列解包到另一組變數中。

解包的使用還可以利用 * 表示式獲取單個變數中的多個元素,只要它的解釋沒有歧義即可。

* 獲取的值預設為 list

# 獲取剩餘部分:

>>> a, b, *c = 0, 1, 2, 3

>>>a

0>>>b

1>>>c

[2, 3]

# 獲取中間部分:

>>> a, *b, c = 0, 1, 2, 3

>>>a

0>>>b

[1, 2]

>>>c

3

# 如果左值比右值要多,那麼帶 * 的變數預設為空

>>> a, *b, c = 0, 1

>>>a

0>>>b

>>>c

1

>>> a, b, *c = 0, 1

>>>a

0>>>b

1>>>c

# 巢狀解包

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

>>>a

1>>>b

2>>>c

3>>>d

4>>>a, b, c, d

(1, 2, 3, 4)

接下來實戰一下,假如乙個字串 'abcdefgh',要輸出下列格式:

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 的字元賦值給 a

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

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

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

>>> s = '

abcdefgh

'>>> while

s:... x, s = s[0], list(s[1:])

...

print

(x, 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

上面的處理,可以用序列解包的方法會來處理。序列解包,在賦值時無疑更方便、更簡潔、更好理解、適用性更強!

運用序列解包的功能重寫上面的**:

>>> s = '

abcdefgh

'>>> while

s:... x, *s =s

...

print

(x, 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

詳解Python3序列賦值 序列解包

上節我們提到解決賦值中等號兩邊引數不一致的方法可以通過切片,但在python3中我們可以利用特定的語法更加方便的處理這種情況,如下示例。當帶 出現在結尾間時 l 1,程式設計客棧2,3,4,5 a,b l print a,b 示例結果 1 2,3,4,5 我們可以看到a匹配了列表中第乙個元素值,而b...

python3 序列切片

格式 切片使用兩個冒號分隔的3個數字來完成。第乙個數字表示切片開始位置 預設為0 第二個數字表示切片截止 但不包含 位置 預設為列表長度 第三個數字表示切片的步長 預設為1 當步長省略是可省略最後乙個冒號。1.切片操作不會因為下標越界而丟擲異常,而是簡單地在列表尾部截斷或者返回乙個空列表。alist...

Python筆記(八)序列解包

是指對多個變數進行賦值的簡潔操作,把乙個序列或者可迭代物件中的元素進行賦值給多個變數,要求等號左邊的值的數量和等號右邊值的數量必須一致 列表,元組,字典,集合 可以使用序列解包功能對多個變數同時進行賦值 x,y,z 1,2,3 多個變數進行同時賦值 tuple2 true,2,y x,y y,x 交...