Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

Pythonとリストとzip関数の使い方

Pythonで複数のリストから同じインデックス番号の要素ごとにまとめたリストを作る方法

Pythonのzip関数を使って簡単に、複数のリストから同じインデックス番号の要素ごとにまとめたものを作る方法

今回はPythonの便利なzip()関数が役立つ場合の事例の1つを紹介する記事です。

zip関数の基本的な使い方そのものの説明は「【初心者向け】PythonのZip関数の解説」をご覧ください。

zip関数が役立つ場面の1つの事例

次のような2つのリストがあったとします。

names = ['田中', '伊藤', '鈴木']
cities = ['東京', '大阪', '福岡']

これらが顧客の情報だった場合、やはり人物ごとにデータにしたいですね。たとえば、

('田中', '東京')
('伊藤', '大阪')
('鈴木', '福岡')

このように、顧客名と顧客住所のセットにしたタプルで表示できると見やすくて便利ですね。

これを実現するときにいろいろやり方はあります。for文を使うのもありでしょう。ですが、zip関数を使うと次のように簡単に実現できます。

zip関数を使ったコード例

基本

今回はzip関数を使い次のようにしてみました。

names = ['田中', '伊藤', '鈴木']
cities = ['東京', '大阪', '福岡']
nested = [names, cities]
completed = list(zip(*nested))

結果は、

[('田中', '東京'), ('伊藤', '大阪'), ('鈴木', '福岡')]

となります。リストの3つの各要素はそれぞれタプルとなっている点に注意しましょう。

では次に関数にして使い回しやすくしましょう。

関数化したもの

def zipped_list(*args):
    return list(zip(*args))

こうしておくと、関数zipped_listの実引数に、何個もリストを加えて使うことができます。コード中の「*args」の説明については「Pythonの引数*args, **kwargsとは?その解説」を読んでみてください。

では実際にその実引数に上記リストnamesとcitiesを設定して実行してみましょう。

zipped_list(names, cities)

結果は、

[('田中', '東京'), ('伊藤', '大阪'), ('鈴木', '福岡')]

人物ごとにその住所情報をセットにすることができました。人名と住所を組み合わせるならば、こちらのほうが見やすいですね。

では最後に上記names, citiesというリストに加えて、新しく誕生日のリストbirthsを作り、それら3つの情報をセットにした顧客情報リストを作ってみましょう。

births = [19881203, 20000113, 20050820]
zipped_list(names, cities, births)

結果は、

[('田中', '東京', 19881203), ('伊藤', '大阪', 20000113), ('鈴木', '福岡', 20050820)]

これで顧客名、その住所、その生年月日をセットにしたタプルから構成されるリストができました。

プログラミングを学びIT業界へ転職するなら現役エンジニアから学べるプログラミングスクールTechAcademy [テックアカデミー]でオンライン講座を受講するのが良いと思います。1人で悩みながら学習を進めるよりもわかりやすく、費やす時間も少なく合理的・効率的に学習できるからです。

など各種の講座が用意されています。無料で体験できるテックアカデミー無料体験も用意されています。

愛を分かち合いましょう