在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 序列長度 查詢最大元素 查詢最小元素 內建函式的功勞 ...