[1,1,1,2,2,2,3,3,3,4,4,4]みたいなリストを作成したい


python3にて，例えばN=3, M=4として，

[code]

    l = [1,1,1,2,2,2,3,3,3,4,4,4]
    
[/code]

みたいなリストを作成したいと考えています．  
(1がN個, 2がN個, ..., MがN個)

このようなリストを作成する最も短いコードを教えていただきたいです．現在は

[code]

    l = list(chain.from_iterable([[i]*N for i in range(1, M+1)]))
    
[/code]

と書いています．一度間違った階層構造のリストを作ってからflattenしているのが気持ち悪いのですが，これより短く記述するのは難しいでしょうか．




内包表記2段でどうでしょう。

[code]

    >>> M = 4
    >>> N = 3
    >>> [x+1 for x in range(M) for y in range(N)]
    [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
    
[/code]

おまけ。

itertools.chain_from_iterable を使う例

[code]

    >>> list(itertools.chain.from_iterable([[x+1]*N for x in range(M)]))
    [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
    
[/code]

itertools.product を使う例

[code]

    >>> import itertools
    >>> [x+1 for x,y in itertools.product(range(M), range(N))]
    [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
    
[/code]




内包表記2段でどうでしょう。

[code]

    >>> M = 4
    >>> N = 3
    >>> [x+1 for x in range(M) for y in range(N)]
    [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
    
[/code]

おまけ。

itertools.chain_from_iterable を使う例

[code]

    >>> list(itertools.chain.from_iterable([[x+1]*N for x in range(M)]))
    [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
    
[/code]

itertools.product を使う例

[code]

    >>> import itertools
    >>> [x+1 for x,y in itertools.product(range(M), range(N))]
    [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
    
[/code]

