zip(iter1,iter2,...)関数は、複数のイテラブル(リスト、タプル、辞書など)を受け取り、それらをタプルに結合して返します。
直接プリントすることはできないので、ここではforループを使います。
zipオブジェクトは基本的に2つのタプルの集まりなので、dict()を使って簡単に辞書に変換することができます。
コンテナのインデックスを取得するために len()やrange()を使うのは煩わしい場合があります。
enumerate(コンテナ, start=num)は、コンテナ内のアイテムのインデックスのイテレート(zipのようなもの)を与えます。
これは、zip()メソッドと組み合わせることもできます。また、zipと同じく、直接プリントすることはできません。
タプルのリストがあり、各タプルの要素を独立したシーケンスに分けたいとします。これを行うには、zip()と解凍演算子*を使用します。
これは、辞書では使えません。
zipとenumerateはどちらも枯渇型のイテレータです。すなわち、一度解凍すると枯渇して使えなくなります。
複数回解凍したい場合は、イテレータを明示的にリストやタプルに変換する必要があります。このエラーを解決するために、4行目のzip()をtuple()で囲みましょう。
イテレータをタプルやリストに変換すると、プログラムの実行時間が長くなることを覚えておいてください。