itertools入門

Pocket

Pythonにはitertoolsというライブラリがあり確率の計算をするときによく使います。

順列

順列を列挙します。

import itertools
s = "abc"
t = itertools.permutations(s, 2)
print(list(t))

結果
[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]

組合せ

組合せを列挙します。

import itertools
s = "abc"
t = itertools.combinations(s, 2)
print(list(t))

結果
[('a', 'b'), ('a', 'c'), ('b', 'c')]

直積

簡単に言えば、集合同士の掛け合わせを直積といいます。
例えば、次のようなものを[0, 1, 2]と[0, 1, 2]の直積といいます。
00, 01, 02, 10, 11, 12, 20, 21, 22

import itertools
s = "abc"
t = itertools.product(s, repeat=2)
print(list(t))

結果
[('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'b'), ('b', 'c'), ('c', 'a'), ('c', 'b'), ('c', 'c')]

同じ桁数の数列を列挙するときに便利です。
repeatで桁数を指定します。

集合同士の掛け合わせが元々の目的なので次のような使い方ができます。

import itertools
= "abc"
y = "12"
z = "AB"
t = itertools.product(x, y, z)
print(list(t))

結果
[('a', '1', 'A'), ('a', '1', 'B'), ('a', '2', 'A'), ('a', '2', 'B'), ('b', '1', 'A'), ('b', '1', 'B'), ('b', '2', 'A'), ('b', '2', 'B'), ('c', '1', 'A'), ('c', '1', 'B'), ('c', '2', 'A'), ('c', '2', 'B')]

その他

上の例では集合として文字列を使いましたが、次のようにリストが使えます。

import itertools
a = ["a", "b", "c"]
t = itertools.permutations(a, 2)
print(list(t))

[ 2021年10月3日 | カテゴリー: Python | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報