1. 程式人生 > >python 基礎知識點 (二) 解壓序列賦值給多個變量

python 基礎知識點 (二) 解壓序列賦值給多個變量

cme har 叠代 同時 cal div 特殊 pack isp

問題

現在有一個包含 N 個元素的元組或者是序列,怎樣將它裏面的值解壓後同時賦值給 N 個變量?

解決方案

任何的序列(或者是可叠代對象)可以通過一個簡單的賦值語句解壓並賦值給多個變量。 唯一的前提就是變量的數量必須跟序列元素的數量是一樣的。

代碼示例:

>>> p = (4, 5)
>>> x, y = p
>>> x
4
>>> y
5
>>>
>>> data = [ ACME, 50, 91.1, (2012, 12, 21) ]
>>> name, shares, price, date = data
>>> name ACME >>> date (2012, 12, 21) >>> name, shares, price, (year, mon, day) = data >>> name ACME >>> year 2012 >>> mon 12 >>> day 21 >>>

如果變量個數和序列元素的個數不匹配,會產生一個異常。

代碼示例:

>>> p = (4, 5)
>>> x, y, z = p
Traceback (most recent call last):
File 
"<stdin>", line 1, in <module> ValueError: need more than 2 values to unpack >>>

討論

實際上,這種解壓賦值可以用在任何可叠代對象上面,而不僅僅是列表或者元組。 包括字符串,文件對象,叠代器和生成器。

代碼示例:

>>> s = Hello
>>> a, b, c, d, e = s
>>> a
H
>>> b
e
>>> e
o
>>>

有時候,你可能只想解壓一部分,丟棄其他的值。對於這種情況 Python 並沒有提供特殊的語法。 但是你可以使用任意變量名去占位,到時候丟掉這些變量就行了。

代碼示例:

技術分享圖片
>>> data = [ ACME, 50, 91.1, (2012, 12, 21) ]
>>> _, shares, price, _ = data
>>> shares
50
>>> price
91.1
>>>
View Code

你必須保證你選用的那些占位變量名在其他地方沒被使用到。

python 基礎知識點 (二) 解壓序列賦值給多個變量