Задача
У меня есть массив с размерами
sizes = [5, 3, 1, 2]
и в зависимости от размеров я хочу создать следующий массив
mapping = [0, 0, 0, 0, 0, 1, 1, 1, 2, 3, 3]
Решение
Моя первая попытка
mapping = []
ctr = 0
for i in range(len(sizes)):
for j in range(sizes[i]):
mapping.append(i)
ctr += 1
Укороченная версия
mapping = [[i for _ in range(sizes[i])] for i in range(len(sizes))]
mapping = list(itertools.chain(*mapping))
Вопрос
Однострочная версия?
Можно ли сделать это всего за одну строку с аккуратным кодом?