*とzipを使って「unzip」する
zip() の使い方と、zip オブジェクトから値を出力する方法を学びましたね。
次は zip() をもう少し掘り下げてみましょう。zip() の逆操作を行う unzip 関数は存在しません。しかし、zip の力を少し借りて、zip() を使って*でまとめたデータを元に戻すことができます!*は、リストやタプルなどの イテラブル を関数呼び出しの 位置引数 に展開します。
この演習では、 *の呼び出しに zip()を使って、zip() が生成したタプルを展開します。
文字列のタプル mutantsと powers はあらかじめ読み込まれています。
この演習はコースの一部です
Python Toolbox
演習の手順
zipとzip()をこの順番でmutantsに渡し、powersオブジェクトを作成します。結果をz1に代入してください。z1の呼び出しで*演算子を使い、print()のタプルを位置引数として展開して出力します。- 前の
print()の呼び出しでz1の要素が消費されるため、先ほどと同じzipオブジェクトを再作成し、再びz1に代入します。 z1の呼び出しで*演算子を使ってzip()のタプルを位置引数に展開し、「Unzip」します。結果をこの順番で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)