python 基礎知識點 (二) 解壓序列賦值給多個變量
阿新 • • 發佈:2018-12-13
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 基礎知識點 (二) 解壓序列賦值給多個變量