2つの配列A,Bがありそれらを組み合わせて結果を出力したかったのですが、そもそも検索ワードも浮かばず困ったのでメモ。やりたいことはリズムで言うとポリリズム、算数で言う公倍数的な考え方がヒントになりそうです。配列同士を掛け算できればいいのですが、力技でやるには無駄というか長すぎて永遠。答えにたどり着くキーワードは「配列 複数 掛け算」でした。複数リストの掛け合わせは、直積(デカルト積)がマッチワードで、リストの組み合わせすべてを出すことができます。

itertoolsモジュールを使う

import itertools
import pprint

l1 = ['a', 'b', 'c']
l2 = ['X', 'Y', 'Z']

p = itertools.product(l1, l2)

print(p)
# <itertools.product object at 0x1026edd80>

print(type(p))
# <class 'itertools.product'>

これが

for v in p:
    print(v)
# ('a', 'X')
# ('a', 'Y')
# ('a', 'Z')
# ('b', 'X')
# ('b', 'Y')
# ('b', 'Z')
# ('c', 'X')
# ('c', 'Y')
# ('c', 'Z')

for v in p:
    print(v)

こんな感じで。

なんとなく高校生くらいまでは数学とか好きだったのですが、触れていないと答えにたどり着くのに「とても解けそうなのに解けない」状態が長く続きます。ネットで調べるにも「キーワード」が難しかったり。

万屋物産は映像制作会社ですが、デカルト積と聞いて直積ねっとピンとくるような数字に強い方からの応募もお待ちしております!