Вы можете попробовать это. Умножьте списки значений по длинам для каждой пары значений и длин.
Вы получите список списков
L = [[i]*j for i, j in zip(values, repeat)]
print(L)
возвращает
[[0, 0, 0], [1, 1, 1, 1], [2, 2]]
Чем составить плоский список
flat_L = [item for sublist in L for item in sublist]
print(flat_L)
[0, 0, 0, 1, 1, 1, 1, 2, 2]