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

Pythonで組み合わせを計算する方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonで組み合わせを計算する方法について解説しています。組み合わせでは、並べる際の順序を考慮しません。itertools.combinations関数を利用すると関数の中から、選ぶ数に応じた組み合わせの数を計算することが出来ます。

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

Pythonで組み合わせを計算する方法について解説します。

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

 

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

 

田島悠介

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

大石ゆかり

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

田島悠介

組み合わせを計算する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

組み合わせを計算する方法(itertoolsを使う方法など)

Pythonで組み合わせを計算するには、itertools.combinations関数を使います。

この関数は引数を2つとります。第一引数はイテレーション可能なオブジェクトです。典型的にはリストです。第二引数は選択する要素の数です。

例えば以下のコードでは、長さ4のリストから、2つの要素を選択した組み合わせを得られます。

xs = [1, 2, 3, 4]
itertools.combinations(xs, 2)

 

実際に書いてみよう

サンプルコード

import itertools

xs = ['one', 'two', 'three', 'four', 'five', 'six']

# 6C2の計算
print(len(list(itertools.combinations(xs, 2))))

# 6C3の羅列
for x in itertools.combinations(xs, 3):
  print(x)

 

実行結果

15
('one', 'two', 'three')
('one', 'two', 'four')
('one', 'two', 'five')
('one', 'two', 'six')
('one', 'three', 'four')
('one', 'three', 'five')
('one', 'three', 'six')
('one', 'four', 'five')
('one', 'four', 'six')
('one', 'five', 'six')
('two', 'three', 'four')
('two', 'three', 'five')
('two', 'three', 'six')
('two', 'four', 'five')
('two', 'four', 'six')
('two', 'five', 'six')
('three', 'four', 'five')
('three', 'four', 'six')
('three', 'five', 'six')
('four', 'five', 'six')

 

解説

最初にoneからsixまでの、文字列6つを含むリストを作成しました。itertools.combinations関数を用いて、6C2(6つから2つを選ぶ組み合わせ)を計算しました。

list関数でリストに変換し、len関数でリストの長さを求める手法としました。
同様に、itertools.combinations関数を用いて、6C3(6つから3つを選ぶ組み合わせ)を羅列しました。

 

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

監修してくれたメンター

橋本紘希

システムインテグレータ企業勤務のシステムエンジニア。

開発実績: Javaプログラムを用いた業務用Webアプリケーションや、基幹システム用バッチアプリケーションなどの設計構築試験。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

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

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