【Python】zip()関数を使って複数のリストを1つにまとめて取得する!サンプルコード付き!
Pythonで複数のリストを1つにまとめて取得するにはzip()関数を使用します。
リストやタプルなどで複数ある要素をまとめて取得したいケースが見られるかと思いますが、その場合はzip()関数を使うと便利です。
今回はzip()関数を使って複数のリストを1つにまとめて取得する方法について解説していきます。
目次
zip()とは
先ほども言いましたが、zip()は複数のリストを同時に取得することができる関数になります。
反復可能なオブジェクト(ゼロ以上)を受け取り、それらをリストなどに集約して返しています。
zip()の書き方
zip()関数の構文は下記になります。
1 |
zip(リストなど1, リストなど2, リストなど3, ...) |
パラメータ
zip()関数のパラメーターは下記になります。
⚫︎ リストなど:
リスト、文字列、辞書など、またはユーザー定義のオブジェクトを指定する
戻り値
パラメータを渡さない場合、空を返します。
単一の反復可能なオブジェクトが渡された場合、要素が1つしかないオブジェクトの要素を返し、複数のオプジェクトが渡された場合、オブジェクトの持つ要素を返します。
zip()関数の基本的な使い方
zip()関数の基本的な使い方について紹介していきます。
複数のオプジェクトをまとめて取得
zip()関数で複数のオプジェクトをまとめて取得することができます。
まずはリストでまとめて取得してみます。
リストで取得した例
1 2 3 4 5 6 7 8 9 10 11 |
name1 = ["山田", "ケニー", "鈴木"] name2 = ["山本", "ベッキー", "クリス"] num1 = [1, 2, 3 ,4] num2 = [5, 6 ,7, 8] mix = zip(name1, name2) mix1 = zip(num1, num2) print(list(mix)) print(list(mix1)) |
出力結果
[(‘山田’, ‘山本’), (‘ケニー’, ‘ベッキー’), (‘鈴木’, ‘クリス’)]
[(1, 5), (2, 6), (3, 7), (4, 8)]
複数の要素を1つのリストでまとめて作成されています。
続いてタプルでまとめて取得してみます。
タプルで取得した例
1 2 3 4 5 6 7 8 9 10 11 |
name1 = ("山田", "ケニー", "鈴木") name2 = ("山本", "ベッキー", "クリス") num1 = (1, 2, 3 ,4) num2 = (5, 6 ,7, 8) mix = zip(name1, name2) mix1 = zip(num1, num2) print(tuple(mix)) print(tuple(mix1)) |
出力結果
((‘山田’, ‘山本’), (‘ケニー’, ‘ベッキー’), (‘鈴木’, ‘クリス’))
((1, 5), (2, 6), (3, 7), (4, 8))
複数の要素を1つのタプルでまとめて作成されています。
要素数が異なるオブジェクトの要素をまとめて取得
zip()関数は要素数が異なるブジェクトの要素をまとめて取得してみます。
まずは、リストでまとめて取得してみます。
リストで取得した例
1 2 3 4 5 6 7 8 9 10 11 |
name1 = ["山田", "ケニー", "鈴木"] name2 = ["山本", "ベッキー", "クリス", "アントニー"] num1 = [1, 2, 3 ,4] num2 = [5, 6 ,7, 8, 10] mix = zip(name1, name2) mix1 = zip(num1, num2) print(list(mix)) print(list(mix1)) |
出力結果
[(‘山田’, ‘山本’), (‘ケニー’, ‘ベッキー’), (‘鈴木’, ‘クリス’)]
[(1, 5), (2, 6), (3, 7), (4, 8)]
要素の数が異なる場合は、少ない方に合わせてリストが作成されます。
余った要素は無視されます。
続いてタプルでまとめて取得してみます。
タプルで取得した例
1 2 3 4 5 6 7 8 9 10 11 |
name1 = ("山田", "ケニー", "鈴木") name2 = ("山本", "ベッキー", "クリス", "アントニー") num1 = (1, 2, 3 ,4) num2 = (5, 6 ,7, 8, 10) mix = zip(name1, name2) mix1 = zip(num1, num2) print(tuple(mix)) print(tuple(mix1)) |
出力結果
((‘山田’, ‘山本’), (‘ケニー’, ‘ベッキー’), (‘鈴木’, ‘クリス’))
((1, 5), (2, 6), (3, 7), (4, 8))
こちらも同様に要素の数が異なる場合は、少ない方に合わせてタプルが作成されます。
余った要素は無視されます。
オブジェクトが異なる要素をまとめて取得
オブジェクトが異なる要素をまとめて取得してみます。
まずは、リストでまとめて取得してみます。
リストで取得した例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
name1 = ["山田", "ケニー", "鈴木"] name2 = ("山本", "ベッキー", "クリス") num1 = [1, 2, 3 ,4] num2 = (5, 6 ,7, 8) mix = zip(name1, name2) mix_list = list(mix) print(mix_list) mix1 = zip(num1, num2) mix1_list = list(mix1) print(mix1_list) |
出力結果
[(‘山田’, ‘山本’), (‘ケニー’, ‘ベッキー’), (‘鈴木’, ‘クリス’)]
[(1, 5), (2, 6), (3, 7), (4, 8)]
リストとタプルの異なるオブジェクトを1つのリストとしてまとめて取得することができました。
続いてタプルでまとめて取得してみます。
タプルで取得した例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
name1 = ["山田", "ケニー", "鈴木"] name2 = ("山本", "ベッキー", "クリス", "アントニー") num1 = [1, 2, 3 ,4] num2 = (5, 6 ,7, 8, 10) mix = zip(name1, name2) mix_tuple = tuple(mix) print(mix_tuple) mix1 = zip(num1, num2) mix1_tuple = tuple(mix1) print(mix1_tuple) |
出力結果
((‘山田’, ‘山本’), (‘ケニー’, ‘ベッキー’), (‘鈴木’, ‘クリス’))
((1, 5), (2, 6), (3, 7), (4, 8))
リストとタプルの異なるオブジェクトを1つのタプルとしてまとめて取得することができました。
for文で複数のオブジェクトの要素をまとめて取得
for文を使って複数のオブジェクトの要素をまとめて取得してみます。
まずは、リストでまとめて取得してみます。
リストで取得した例
1 2 3 4 5 6 7 8 9 10 11 |
name1 = ["山田", "ケニー", "鈴木"] name2 = ["山本", "ベッキー", "クリス", "アントニー"] num1 = [1, 2, 3 ,4] num2 = [5, 6 ,7, 8, 10] for name1, name2 in zip(name1, name2): print(name1, name2) for num1, num2 in zip(num1, num2): print(num1, num2) |
出力結果
山田 山本
ケニー ベッキー
鈴木 クリス
1 5
2 6
3 7
4 8
複数のリストの中の要素をまとめて取得することができました。
続いてタプルでまとめて取得してみます。
タプルで取得した例
1 2 3 4 5 6 7 8 9 10 11 |
name1 = ("山田", "ケニー", "鈴木") name2 = ("山本", "ベッキー", "クリス", "アントニー") num1 = (1, 2, 3 ,4) num2 = (5, 6 ,7, 8, 10) for name1, name2 in zip(name1, name2): print(name1, name2) for num1, num2 in zip(num1, num2): print(num1, num2) |
出力結果
山田 山本
ケニー ベッキー
鈴木 クリス
1 5
2 6
3 7
4 8
複数のタプルの中の要素をまとめて取得することができました。
こちらは要素の中身をそのまあ取得するようになります。
リストを解凍する
zip()関数はリストを解凍することもできます。
例
1 2 3 4 5 6 7 8 9 10 11 |
name1 = ("山田", "ケニー", "鈴木") name2 = ("山本", "ベッキー", "クリス", "アントニー") num1 = (1, 2, 3 ,4) num2 = (5, 6 ,7, 8, 10) for name1, name2 in zip(name1, name2): print(name1, name2) for num1, num2 in zip(num1, num2): print(num1, num2) |
出力結果
[(‘山田’, 1), (‘ケニー’, 2), (‘鈴木’, 3)]
n1 = (‘山田’, ‘ケニー’, ‘鈴木’)
n2 = (1, 2, 3)
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。