zip関数
Pythonのzip関数の使い方を動画を使って説明しています。
Pythonのzip関数は、forループで複数のリストの要素を取得してタプルの形式でまとめて変数に代入してくれます。これはつまり、タプルのアンパッキングを行っているものです。
もし、zip関数を使用時に、いくつかのリストが持つ要素数が異なる場合は、要素数が多いリストの余分な要素が無視されます。
2つのリストでzip関数を使った例
x = [1, 2, 3] y = [4, 5, 6] for num in zip(x, y): print(num)
結果
(1, 4)
(2, 5)
(3, 6)
タプルの場合もリストと同じ結果になります。
x = (1, 2, 3) y = (4, 5, 6) for num in zip(x, y): print(num)
結果
(1, 4)
(2, 5)
(3, 6)
for in文の中の変数をイテラブルなオブジェクトの数に合わせると、それぞれの変数に値が入ります。
for in文の変数を複数にした例
x = [1, 2, 3] y = [4, 5, 6] for num_x, num_y in zip(x, y): print('num_x:', num_x, 'num_y:', num_y) print('------------------')
結果
num_x: 1 num_y: 4
——————
num_x: 2 num_y: 5
——————
num_x: 3 num_y: 6
——————
辞書作成
Pythonのzip関数を使ってタプルから辞書を作成する例
english = ('dog', 'cat', 'bird', 'monkey') japanese = ('犬', '猫', '鳥', '猿') dict(zip(english,japanese))
結果
{‘bird’: ‘鳥’, ‘cat’: ‘猫’, ‘dog’: ‘犬’, ‘monkey’: ‘猿’}
zip関数でリスト要素の入れ替えが行えます。
リスト要素の入れ替えの例
この例ではfor in文を使用していません。
下記コードのdataにはzip関数適用後イテレータが返されます。
イテレータの内容を直接確認できませんが、list()でリスト型にキャストすることでその中身を確認しています。
name = ['織田信長', '豊臣秀吉', '徳川家康'] height = [1.78, 1.65, 1.50] weight = [60, 50, 75] data = zip(name, height, weight) list(data)
結果
[(‘織田信長’, 1.78, 60), (‘豊臣秀吉’, 1.65, 50), (‘徳川家康’, 1.5, 75)]
zip関数を使った後にできた値を変数に代入しておいて、その変数をzip関数の引数の先頭に * をつけると、zip したリストを元に戻せます。
zip関数を適用した値を元に戻す例
x = [1, 2, 3] y = [4, 5, 6] zipped = zip(x, y) z = list(zipped) print(z) list(zip(*z))
結果
[(1, 4), (2, 5), (3, 6)]
[(1, 2, 3), (4, 5, 6)]
次のコードはPythonチュートリアルPythonチュートリアルにあるコードです。
これの意味は動画で説明していますので参考にしてください。
x = [1, 2, 3] y = [4, 5, 6] zipped = zip(x, y) print(list(zipped)) x2, y2 = zip(*zip(x, y)) x == list(x2) and y == list(y2)
参考になった書籍
プログラミングを少しでも経験がありPython の文法を学習する場合は、「入門 Python 3」が良いと思います。長く使えます。
「退屈なことはPython にやらせよう」はオブジェクト指向の解説がないです。代わりにPythonを使った便利な実例が初心者には嬉しい内容です。正規表現から、簡単なスクレイピング 、画像操作などあります。ただし、中級者以上には少し物足りないかもしれません。
Pythonサンプルのダウンロード
ここでダウンロードする「zip.ipynb」ファイルは、このPython動画で使用したものです。
Python入門一覧
- Python入門 クラスの継承とオーバーライド(動画あり)
- Python入門 オブジェクト指向について、クラスの作り方(動画あり)
- Python入門 lambda関数の使い方、map関数の使い方(動画あり)
- Python入門 位置引数、キーワード引数、デフォルト引数、便利な引数の使い方(動画あり)
- Python入門 グローバル変数とローカル変数(動画あり)
- Python入門 モジュールのインポートとrandomモジュール(動画あり)
- Python入門 関数の定義方法(動画あり)
- Python入門 内包表記(動画あり)
- Python入門 zip関数(動画あり)
- Python入門 for in文の活用(動画あり)
- Python入門 for in文の基本(動画あり)
- Python入門 三項演算子(動画あり)
- Python入門 if文の使い方2 while文の使い方(動画あり)
- Python入門 if文の使い方(動画あり)
- Python入門 浅いコピーと深いコピー(動画あり)
- Python入門 参照渡し(動画あり)
- Python入門 集合(動画あり)
- Python 入門 辞書(動画あり)
- Python 入門 タプルについて(動画あり)
- Python入門 リストのメソッド(動画あり)
- Python入門 リストのスライス(動画あり)
- Python入門 リスト
- Python入門 BMI課題 (動画あり)
- Python入門 文字列の連結とフォーマット1(動画あり)
- Python入門 文字列のフォーマット2(動画あり)
- Python入門 エスケープと型変換とinput()の使い方(動画あり)
- Python入門 pep8(動画あり)
- Python入門 変数の練習(動画あり)
- Python入門 変数(動画あり)
- Python入門 文字列(動画あり)
- Python入門 演算子(動画あり)
- Python入門 Python をはじめよう! (動画あり)