2016-09-11 2 views
0

Я пытаюсь создатьпитона список понимание, чтобы создать повторяющееся значение из списка

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

Выход:

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

но то, что я хочу, чтобы создать

  • 1 3 раза
  • 3 4 раза

Ожидаемый результат:

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

Можно ли это сделать в списке понимание?

ответ

5

Используйте zip() function спарить ваши номера с их подсчетов:

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

Конечно, с zip:

>>> [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, если вы хорошо с массивом как a)

import numpy as np 
np.repeat([1, 2, 3] ,[3, 1, 4]) 
Смежные вопросы