0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Python初心者】map()関数とzip()関数の使い方まとめ

0
Posted at

Pythonの学習を進める中で、map()関数とzip()関数がよく同じ章に登場することに気づきました。
どちらも複数の要素をまとめて処理する場面で使われるため、整理して覚えておきたいと思い、この記事をまとめました。

map()関数とは?

map()関数は、指定した関数を、リストなどの各要素に1つずつ適用するための関数です。
また、複数のイテラブル(リストなど)を渡すと、それぞれの要素を順番に取り出して、関数の引数として渡すことができます。

基本構文

map(関数, イテラブル1, [イテラブル2, ...])

戻り値は map オブジェクト(イテレータ)です。結果をすぐに使いたいときは、list()で明示的にリスト化します。

単一のイテラブルに対して使う例

nums = [1, 2, 3, 4, 5]
result = map(lambda x: x * 2, nums)
print(list(result))  # [2, 4, 6, 8, 10]

複数のイテラブルに対して使う例

l1 = [1, 2, 3]
l2 = [4, 5, 6]
result = map(lambda x, y: x * y, l1, l2)
print(list(result))  # [4, 10, 18]

この場合、lambda x, y:x には l1 の要素が、y には l2 の要素がそれぞれ順番に渡されます。

回数 x (l1) y (l2) x * y
1 1 4 4
2 2 5 10
3 3 6 18

zip()関数とは?

zip()関数は、複数のイテラブルの要素を対応づけて、タプルとしてまとめるための関数です。

基本構文

zip(イテラブル1, イテラブル2, ...)

戻り値は zip オブジェクト(イテレータ)です。必要に応じて list() などで取り出します。

使用例

names = ['Alice', 'Bob', 'Charlie']
scores = [85, 90, 78]

zipped = zip(names, scores)
print(list(zipped))
# [('Alice', 85), ('Bob', 90), ('Charlie', 78)]

zip()は「対応する要素をタプルにまとめる」のに便利です。

map()とzip()の違いと使い分け

比較ポイント map() zip()
主な目的 関数の適用 データの結び付け
戻り値 mapオブジェクト zipオブジェクト
処理内容 関数を通して要素を変換する 要素をタプルとしてまとめる

どちらもイテレータを返すので、for文やlist()で中身を取り出す必要があります。

map()とzip()の組み合わせ例

2つのリストの要素を掛け合わせる処理を、zip()map()を組み合わせて書くこともできます。

l1 = [1, 2, 3]
l2 = [10, 20, 30]

result = map(lambda t: t[0] * t[1], zip(l1, l2))
print(list(result))  # [10, 40, 90]

このように、zip()でタプルにまとめてからmap()で処理することで、複数の引数を1つのタプルとして関数に渡すことができます。

おわりに

map()関数とzip()関数は、Pythonの繰り返し処理やデータ操作でとても役立ちます。
処理の目的やデータの形に応じて、適切に使い分けられるようになっていきたいです。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?