これまで順列や組合せについてみてきました。今回はpythonの直積(product関数)についてのべます。順列や組合せと異なり聞いたことがない言葉で戸惑う人もいるかもしれません。しかし以前述べた順列や組合せより簡単ですので安心してください。
それでは説明を始めます。
これまで順列や組合せについてみてきました。今回はpythonの直積(product関数)についてのべます。順列や組合せと異なり聞いたことがない言葉で戸惑う人もいるかもしれません。しかし以前述べた順列や組合せより簡単ですので安心してください。
それでは説明を始めます。
直積はデカルト積ともいわれます。表にして交点は軸の組合せにあります。
トランプの例というとマークは[♠, ♥, ♦, ♣]、数字は[A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K]があります。このとき[♠, ♥, ♦, ♣]×[A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K]を直積と呼びます。直積は表の縦方向のヘッダに掛け合わせる前のリスト、横方向のヘッダに掛け合わせる後ろのヘッダを置いたときの交点が直積になります。(下の表の背景がグレーでない部分)
A | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | J | Q | K | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
♠ | ♠,A | ♠,2 | ♠,3 | ♠,4 | ♠,5 | ♠,6 | ♠,7 | ♠,8 | ♠,9 | ♠,10 | ♠,J | ♠,Q | ♠, K |
♥ | ♥,A | ♥,2 | ♥,3 | ♥,4 | ♥,5 | ♥,6 | ♥,7 | ♥,8 | ♥,9 | ♥,10 | ♥,J | ♥,Q | ♥, K |
♦ | ♦,A | ♦,2 | ♦,3 | ♦,4 | ♦,5 | ♦,6 | ♦,7 | ♦,8 | ♦,9 | ♦,10 | ♦,J | ♦,Q | ♦, K |
♣ | ♣,A | ♣,2 | ♣,3 | ♣,4 | ♣,5 | ♣,6 | ♣,7 | ♣,8 | ♣,9 | ♣,10 | ♣,J | ♣,Q | ♣, K |
直積の要素の数はそれぞれのリストの長さを掛け合わせたものになります。len([♠, ♥, ♦, ♣])×len([A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K])=4×13=52通りです。
pythonで直積を求めてみます。
from itertools import product
mark=['♠', '♥', '♦', '♣']
suu = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
tramp = [m for m in product(mark,suu)]
print(tramp)
実行結果
[('♠', 'A'), ('♠', '2'), ('♠', '3'), ('♠', '4'), ('♠', '5'), ('♠', '6'), ('♠', '7'), ('♠', '8'), ('♠', '9'), ('♠', '10'), ('♠', 'J'), ('♠', 'Q'), ('♠', 'K') , ('♥', 'A'), ('♥', '2'), ('♥', '3'), ('♥', '4'), ('♥', '5'), ('♥', '6'), ('♥', '7'), ('♥', '8'), ('♥', '9'), ('♥', '10'), ('♥', 'J'), ('♥', 'Q'), ('♥', 'K') , ('♦', 'A'), ('♦', '2'), ('♦', '3'), ('♦', '4'), ('♦', '5'), ('♦', '6'), ('♦', '7'), ('♦', '8'), ('♦', '9'), ('♦', '10'), ('♦', 'J'), ('♦', 'Q'), ('♦', 'K') , ('♣', 'A'), ('♣', '2'), ('♣', '3'), ('♣', '4'), ('♣', '5'), ('♣', '6'), ('♣', '7'), ('♣', '8'), ('♣', '9'), ('♣', '10'), ('♣', 'J'), ('♣', 'Q'), ('♣', 'K')]
直積のところで述べたのと同じ結果が得られています。
今回は直積についてのべました。順列や組合せに比べてわかりやすかったのではないかとおもいます。
Comment on this article
コメントはまだありません。
Send comments