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

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

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,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] Pythonで挫折しない学習方法を動画で公開中

監修してくれたメンター

橋本紘希

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

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

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

オンラインのプログラミングスクールTechAcademyではPythonを使って機械学習の基礎を学ぶPythonオンライン講座を開催しています。

初心者向けの書籍を使って人工知能(AI)や機械学習について学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

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