pythonで任意の要素数の組からなるリストを作りたい


pythonで以下のようなリストを作成したいと考えています。

[code]

    [[i, 3+j] for i in range(3) for j in range(3)]
    #[[0, 3], [0, 4], [0, 5], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5]]
    [[i, 3+j, 6+k] for i in range(3) for j in range(3) for k in range(3)]
    #[[0, 3, 6], [0, 3, 7], [0, 3, 8], [0, 4, 6], [0, 4, 7], [0, 4, 8], [0, 5, 6], 
    #[0, 5, 7], [0, 5, 8], [1, 3, 6], [1, 3, 7], [1, 3, 8], [1, 4, 6], [1, 4, 7], 
    #[1, 4, 8], [1, 5, 6], [1, 5, 7], [1, 5, 8], [2, 3, 6], [2, 3, 7], [2, 3, 8], 
    #[2, 4, 6], [2, 4, 7], [2, 4, 8], [2, 5, 6], [2, 5, 7], [2, 5, 8]]
    
[/code]

要素数4なら[[i, 3+j, 6+k, 9+l] for i in range(3) for j in range(3) for k in
range(3) for l in range(3)],...というようにしたいのですが、要素数を後から決めたいのです。  
要素数を引数にして任意の要素数からなるリストを作成する方法などありますでしょうか。  
解決の糸口をいただければと思います。

また、今後同様の問題にあたった場合、どのような検索をすればよいか教えていただけると助かります。




以下のような感じでよいと思います。  
指定の要素数に見合った各要素の値の候補を用意して、それらをitertoolsのproductで全組み合わせ列挙します。

[code]

    from itertools import product
    
    N = 2
    a = [list(map(lambda v: v+i*3, range(3))) for i in range(N)]
    print(a) # [[0, 1, 2], [3, 4, 5]]
    
    ret = [p for p in product(*a)]
    print(ret) # [(0, 3), (0, 4), (0, 5), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5)]
    
[/code]

> また、今後同様の問題にあたった場合、どのような検索をすればよいか教えていただけると助かります。

まずは結果の生成ルール（仕様）を推測して決めます。  
そのさい、今回の問題では順列、組合せについての知識が必要かと思いました。  
あとはルールどおりの動作をするコードを書きます。  
コードを書いたあとで、それを簡単に実現できるパッケージがないか検索してもよいでしょう。




以下のような感じでよいと思います。  
指定の要素数に見合った各要素の値の候補を用意して、それらをitertoolsのproductで全組み合わせ列挙します。

[code]

    from itertools import product
    
    N = 2
    a = [list(map(lambda v: v+i*3, range(3))) for i in range(N)]
    print(a) # [[0, 1, 2], [3, 4, 5]]
    
    ret = [p for p in product(*a)]
    print(ret) # [(0, 3), (0, 4), (0, 5), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5)]
    
[/code]

> また、今後同様の問題にあたった場合、どのような検索をすればよいか教えていただけると助かります。

まずは結果の生成ルール（仕様）を推測して決めます。  
そのさい、今回の問題では順列、組合せについての知識が必要かと思いました。  
あとはルールどおりの動作をするコードを書きます。  
コードを書いたあとで、それを簡単に実現できるパッケージがないか検索してもよいでしょう。

