2016-09-11 6 views
0

リストから繰り返し値を作成するPythonのリスト内包表記は、私が作成しようとしています

[ x 
for x in [1,2,3] 
    for y in [3,1,4] ] 

出力:

[1, 1, 1, 2, 2, 2, 3, 3, 3] 

しかし、私が欲しいのは

  • 1 3回を作成することです
  • 2 1回
  • 3 4回

予想される出力:

[1, 1, 1, 2, 3, 3, 3, 3] 

それはリストの内包でこれを行うことは可能ですか?

答えて

5

そのカウントを使用して数字をペアリングするzip() functionを使用します。zip

numbers = [1, 2, 3] 
counts = [3, 1, 4] 
output = [n for n, c in zip(numbers, counts) for _ in range(c)] 
2

確かに、:

>>> [item for x,y in zip([1,2,3], [3,1,4]) for item in [x]*y] 
[1, 1, 1, 2, 3, 3, 3, 3] 
1

私があなたならば、あなたはまた、として配列で細かいnp.repeatを使用することができますよ結果

import numpy as np 
np.repeat([1, 2, 3] ,[3, 1, 4]) 
関連する問題