オーダーメイドコース
icon
icon

Pythonのitertoolsモジュールについて現役エンジニアが解説【初心者向け】

初心者向けにPythonのitertoolsモジュールについて解説しています。イテレータを使うとリストなどのコレクションの各要素に対してひとつひとつ処理を行うことができます。itertoolモジュールの導入方法、使用例を見ていきましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Pythonのitertoolsモジュールについて、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
 

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

 

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

 

田島悠介

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

大石ゆかり

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

田島悠介

itertoolsモジュールについて詳しく説明していくね!

大石ゆかり

お願いします!

目次

 

イテレータとは

イテレータとは、データの流れを表すオブジェクトのことをいいます。リストやタプル、辞書などから流れの中のデータを一つ一つ取り出していきながら処理を行うことをいいます。

 

[PR] 未経験からWebエンジニアを目指す方法とは

itertoolsモジュールについて

itertoolモジュールはイテレータを構築する部品を実装したPythonのモジュールになります。

プログラミング言語のAPL, Haskell, SMLからアイデアを得てPythonに適した形にしたモジュールです。

このモジュールの特徴としては、高速でメモリ効率が優れていること、単独であっても組み合わせても使えることがあげられます。インストールしなくても標準で利用可能なモジュールです。

 

itertoolsモジュールの使い方

itertoolsモジュールを使う時にはまずimportする必要があります。以下のように記述します。

import itertools

itertoolsモジュールの中にはイテレータを構成する関数が複数あります。組み合わせて使う関数があれば単独で使える関数もあります。

次の実際に使ってみようの項目でitertoolsモジュールの代表的な関数を使って処理内容を見ていこうと思います。

 

実際に使ってみよう

ではitertoolsモジュールを実際に使ってみましょう。

ソースコード

import itertools

print("=== count() ===")
for i in itertools.count():
  print(i)
  if i == 4:
    break

print("=== chain() ===")
for i in itertools.chain([1, 3, 5],[2, 4, 6]):
  print(i)

print("=== cycle() ===")
count = 0
for i in itertools.cycle([5,4,3,2,1]):
  if count >= 7:
    break
  print(i)
  count += 1

print("=== accumulate() ===")
for i in itertools.accumulate([1, 10, 100, 1000, 10000]):
  print(i)

 

実行結果

=== count() ===
0
1
2
3
4
=== chain() ===
1
3
5
2
4
6
=== cycle() ===
5
4
3
2
1
5
4
=== accumulate() ===
1
11
111
1111
11111

 

count関数は無限イテレータといい、0から順番に数字を取得していきます。

chain関数は第1引数のリストと第2引数のリストを連結させて一つのリストを作ります。

cycle関数は引数で設定した値を無限に繰り返します。

accumulate関数は内積和を取得できまず。

 

まとめ

この記事ではPythonのitertoolsモジュールについて解説しました。

 

監修してくれたメンター

メンターSさん

システムエンジニアとしてこれまで行政システムや医療用システムの保守、開発に携わりました。

JavaやPython、PHP、Kotlinなど様々な言語での開発経験があります。

TechAcademyではJavaコース、Pythonコース、AIコースなど7コースを担当しています。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

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

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。