python - 拆包可迭代數據如tuple, list


拆包是指將一個結構中的數據拆分為多個單獨變量中。

以元組為例:

>>> a = ('windows', 10, 25.1, (2017, 12, 29))

假設數據的意思是購買windows 10 份, 每份價值25.1刀。數據獲取時間是2017年12月29日。

我們需要獲取該數據中每份的價格:

>>> a[2]

也可以使用拆包的方法:

>>>os_type, number, price, dat = a

>>>price

注意的問題拆包對象必須是可迭代的比如tuple和list。

 

第二個問題:我們只關心價格和日期,不關心系統和數量:

用一個不使用的變量,然后通過適配符號*,統配前兩項。

>>> *_, price, dat = a

>>> price

>>>dat

 

第三個問題,如果我們只關心價格和月份,如何解開包?

>>> *_, price, (_, m, d) = a

>>> price

>>> m

 

注意解包在python中都支持,但是使用*統配多個數值python3中開始支持。所以使用*時候注意python版本信息。

 

問題: 如果左邊和右邊個數不匹配,沒有使用*,結果會是什么:

ValueError: too many values to unpack

>>> _, price, (*_, m, d) =a
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    _, price, (*_, m, d) =a
ValueError: too many values to unpack (expected 3)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM