itertools入門
Pythonにはitertoolsというライブラリがあり確率の計算をするときによく使います。
順列
順列を列挙します。
s = "abc"
t = itertools.permutations(s, 2)
print(list(t))
結果
[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]
組合せ
組合せを列挙します。
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
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で桁数を指定します。
集合同士の掛け合わせが元々の目的なので次のような使い方ができます。
x = "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')]
その他
上の例では集合として文字列を使いましたが、次のようにリストが使えます。
a = ["a", "b", "c"]
t = itertools.permutations(a, 2)
print(list(t))
[ 2021年10月3日 | カテゴリー: Python | タグ: itertools , 入門 ]
« 「数字と英字をそれぞれ1回以上使う」はパスワードが弱くなる理由 | 「リンクの自動更新が無効にされました」で試した方法 »
コメントを残す