同じものを含む順列(再帰)

こちらの順列を参考に同じ物を含む順列作ってみた。
Python で順列を生成 | すぐに忘れる脳みそのためのメモ

def permutations(L):

    if L == []:
        return [[]]

    else:
        ret = []

        # set(集合)型で重複を削除、ソート
        S = sorted(set(L))

        for i in S:

            data = L[:]
            data.remove(i)

            for j in permutations(data):
                ret.append([i] + j)

        return ret
        
junretsu = permutations([1, 1, 1, 2, 2, 3])

#順列の個数
print( len(junretsu) )

imabari.hateblo.jp

前のだと14個の組合せ作ってたら5時間ぐらいかかってたのが1分ぐらいで終わるようになった。

imabari.hateblo.jp
imabari.hateblo.jp