Python3中的擴充套件序列解包
阿新 • • 發佈:2018-12-19
在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": 1, "B": 2, "C": 3} # 如果是字典,同樣為列表 >>> 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引進的序列解包還是很有用的。