Pythonにおけるitemgetter()の利用方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonにおけるitemgetter()の利用方法について現役エンジニアが解説しています。itemgetter()はPythonの標準モジュールoperatorのメソッドで、イテラブルから任意の要素を抜き出すことができます。イテラブルとはリストや文字列などのオブジェクトのことです。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Pythonにおけるitemgetter()の利用方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。これができるようになるとイテラブルから任意の要素を抜き出すことができます。

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonにおけるitemgetter()の利用方法について詳しく説明していくね!

大石ゆかり

お願いします!

今回はpythonの標準モジュールであるoperatorの中からitemgetterを紹介していきます。

itemgetter()とは?

itemgetter()はPythonの標準モジュール「operator」の一つです。

operatorモジュールはPythonの組み込み演算子に対応する効率的な関数群を提供しているモジュールです。

itemgetterは演算対象からその__getitem__()メソッドを使って要素を取得する呼び出し可能なオブジェクトを返します。中の動作としては以下の関数と同じことを行っています。

def itemgetter(*items):
    if len(items) == 1:
        item = items[0]
        def g(obj):
            return obj[item]
    else:
        def g(obj):
            return tuple(obj[item] for item in items)
    return g

まとめると、itemgetter()を使うことでイテラブル(リスト,文字列などfor文のinに書き込めるオブジェクト)から任意の要素を抜き出すことができます。

itemgetter()の使い方

具体的な使い方を紹介します。基本的にはindexを使って、イテラブルから要素を取得します。

from operator import itemgetter
title = "Python"
print(itemgetter(3)(title))
# >>'h'

これだけだとtitle[3]でもいいのですが、itemgetter()は複数のindexを要求すると、その要素をタプルですべて返すことができます。

print(itemgetter(1, 2, 3)(title))
# >> ('y', 't', 'h')

 

[PR] Pythonで挫折しない学習方法を動画で公開中

itemgetter()を利用して要素を抽出してみよう

それでは実際にコードを書いて行きます。

以下のコードをコピーして、テキストエディタに貼り付けて実行します。ファイル名は「demo.py」とします。

from operator import itemgetter
f = itemgetter(2, 3)
fruits = ["apple", "cherry", "mango", "banana", "peach"]
print(f(fruits))

保存後、コードを実行すると以下の実行結果が出力されます。

$ python demo.py
('mango', 'banana')

 

まとめ

今回はitemgetterについて紹介していきました。うまく使うことで可読性を上げることにもつながります。この他にもoperatorモジュールには演算処理に便利な関数があるので、ぜひ調べてみてください。

監修してくれたメンター

メンター三浦

モバイルゲームを運用している会社のエンジニアをしています。趣味でWEB開発やクラウドコンピューティングもやっており、ソフトもハードもなんでもやります。

TechAcademyジュニアではPythonロボティクスコースを担当しています。好きな言語はPython, Node.js。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。