使用 * 與 zip 來「反壓縮」
你已經知道如何使用 zip(),也能從 zip 物件列印出值。很好!
我們再來多玩一下 zip()。zip() 沒有對應的「unzip」函式可以做相反操作。不過,我們可以搭配 *,再呼叫一次 zip(),把先前「zip 起來」的內容反轉回來!* 會在函式呼叫中,將像是 list 或 tuple 這類的「可疊代物件(iterable)」拆封成「位置引數(positional arguments)」。
在這題中,你會在對 zip() 的呼叫中使用 *,把 zip() 產生的 tuple 拆封。
兩個由字串組成的 tuple,mutants 與 powers,已經預先載入。
本練習屬於課程
Python 工具箱
練習說明
- 使用
zip(),依序以mutants、powers建立一個zip物件,指派給z1。 - 在一次
print()呼叫中使用*運算子,將z1的各個 tuple 拆封為位置引數,並列印它們。 - 由於前一次
print()呼叫已經耗盡z1的元素,請重新建立先前定義的zip物件,並再次指派給z1。 - 在一次
zip()呼叫中使用*運算子,將z1的各個 tuple 拆封為位置引數,以達到「反壓縮」。依序將結果指派給result1與result2。 - 最後的
print()會列印將result1與mutants、result2與powers比較的結果。按下「Submit Answer」查看拆封後的result1、result2是否分別等同於mutants與powers。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Create a zip object from mutants and powers: z1
z1 = ____
# Print the tuples in z1 by unpacking with *
print(____)
# Re-create a zip object from mutants and powers: z1
z1 = ____
# 'Unzip' the tuples in z1 by unpacking with * and zip(): result1, result2
result1, result2 = ____
# Check if unpacked tuples are equivalent to original tuples
print(result1 == mutants)
print(result2 == powers)