Python3中的擴充套件序列解包

2021-08-30 15:52:22 字數 1620 閱讀 4304

在python中的一般的賦值語句格式如下:

>>> spam = 'spam'                   # 基本賦值形式

>>> spam, ham = 'spam', 'hum' # 元祖賦值形式

>>> [spam, ham] = ['spam', 'hum'] # 列表賦值形式

>>> a, b, c, d = 'spam' # 序列賦值形式

>>> spam = ham = 'lunch' # 多目標賦值形式

>>> spams = 10; spams += 1 # 增強型賦值形式

python3以來,就有擴充套件的序列解包,具體示例:

>>> a, *b = [1, 2, 3, 4]              # a負責接收1,餘下的全賦值給b

>>> a, b

(1, [2, 3, 4])

>>> a, *b, c = (1, 2, 3, 4) # 位置可以在中間

>>> a, b, c

(1, [2, 3], 4)

>>> a, b, *c = "spam" # 也可以在後,整個為列表

>>> a, b, c

('s', 'p', ['a', 'm'])

>>> a, *b = # 如果是字典,同樣為列表

>>> a, b

('a', ['b', 'c'])

>>> a, b, *c = "sb" # 如果不夠話,則為空列表

>>> a, b, c

('s', 'b', )

幾個其它小示例:

>>> # 示例一: for迴圈遍歷中解包的應用

>>> for (a, *b, c) in [(1,2,3,4), (5,6,7,8)]:

... print(a, b, c)

...1 [2, 3] 4

5 [6, 7] 8

>>> # 示例二: 未使用序列解包的乙個用例

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

>>> while l:

... front, l = l[0], l[1:]

... print(front,"->",l)

...1 -> [2, 3, 4, 5]

2 -> [3, 4, 5]

3 -> [4, 5]

4 -> [5]

5 ->

>>> # 示例三: 使用序列解包的乙個用例

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

>>> while l:

... front,*l = l

... print(front,"->",l)

...1 -> [2, 3, 4, 5]

2 -> [3, 4, 5]

3 -> [4, 5]

4 -> [5]

5 ->

>>>

從上面的示例來看, python3.0引進的序列解包還是很有用的。 

Python3 序列解包

自 序列解包是 python 3.0 之後才有的語法 什麼是序列解包呢?先看乙個例子 a,b,c 1,2,3 a 1 b 2 c 3 這種方法並不限於列表和元組,而是適用於任意序列型別 甚至包括字串和位元組序列 只要賦值運算子左邊的變數數目與序列中的元素數目相等,你都可以用這種方法將元素序列解包到另...

詳解Python3序列賦值 序列解包

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

python3中通用的序列操作

python3中包含有4種內建的序列 列表 元組 字串 unicode字串 buffer物件 xrange物件在2中存在,3中好像沒有了 通用的序列操作 所有的序列型別都可以進行的操作 索引 切片 拼接 複製多次 成員資格檢查in not in 序列長度 查詢最大元素 查詢最小元素 內建函式的功勞 ...