解包、擴充解包和巢狀擴充解包
解包是一種將可迭代物件中的多個值分配給單一變數的便捷方法陳述。 Python 支援三種類型的解包:簡單解包、擴充解包和巢狀擴充解包。
簡單解包
- 依序將項目分配給目標變數
- 不支援任意省略或重複
- 例:a, b = 1, 2
擴充拆包
- 使用* 運算子收集剩餘項目進入清單
- 可以省略或重複清單中的運算子收集剩餘項目進入清單
- 可以省略或重複清單中的專案目標
範例:a, *b = 1, 2, 3, 4, 5
巢狀擴充解包
-
- 將擴充解包與巢狀序列結合
- 分配從巢狀序列到目標變數的值
範例:*(a, b) = 1, 2
要手動正確推導這些表達式的結果,請依照下列步驟操作:
1。將可迭代物件轉換為元組:
假設所有可迭代物件都表示為元組,即使它們沒有明確地用括號編寫。
2.應用擴充拆包規則:
不含 * 的變數分配單一項目。
3。解決嵌套解包中的歧義:
如果為變數分配了嵌套序列,它將被解包到其單獨的序列中元素。
範例:
1.
(a, b), c = 1, 2, 3-
-
轉換:((a, b), c) = (1, 2, 3)
解包:a = 1, b = 2, c = 3
2.- (a, b), c, = [1 , 2], '這個'
- 轉換:((a, b), c) = ((1, 2), '這個')
解壓縮:a = 1, b = 2, c = '這個'
註:-
一個左值中不存在多個* 運算子允許。 -
- 目標必須位於清單或元群組中。
空可迭代物件不能指派給 * 目標。 嵌套解壓縮可能會導致不明確的結果。
以上是Python 的簡單、擴充和嵌套解包是如何運作的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!