У меня есть список отсчетов, где каждый индекс представляет число, а его число показывает, сколько из этого числа находится в списке:
a = [3,5,1,2]
превращается в
b = [0,0,0,1,1,1,1,1,2,3,3]
I думал, что мы могли бы сделать что-то вроде:
b = []
for ix, el in enumerate(a):
b.extend([ix]*a[ix])
print(b)
Но если я не ошибаюсь, потребуется k (count val) время, чтобы поместить его в список b, так как расширение занимает k времени, но это также должно быть выполнено n раз, что дает нам время выполнения n * k, где n - число признаков, а k - количество отсчетов для каждого индекса
Другая идея состоит в том, чтобы вместо массива отсчетов мы могли иметь массив чистые элементы:
a = [[0,0,0],[1,1,1,1,1],[2],[3,3]]
, но чтобы сгладить это, потребуется еще некоторое время (я думаю, что n * k раз)
b = [item for sublist in a for item in sublist]
есть ли способ сделать это более эффективным? Может быть, преобразовать в строку, убрав все скобки и превратить обратно в список?