Как повторить элементы списка заданное количество раз? (python)

Есть два списка одинаковой длины. Первый содержит строковые значения (str). Второй численные (int). Необходимо создать третий список, в котором необходимо повторить строковые значения из первого списка столько раз, сколько указано во втором списке. Например:
На входе:

a=["A","B","C"]
b=[2,3,2]

На выходе:

c=["A","A","B","B","B","C","C"]

Ответы (7 шт):

Автор решения: Недокодер
a = ["a", "b", "c"]
b = [2, 3, 4]
d = []
for x in range(len(a)):
    d.append(a[x] * b[x])

Достаточно легко можно сделать с помощью оператора for
Дополняю вопрос про команды append и extend

Команда append полностью всё предложение кидает в одну ячейку списка, а extend как раз раскидивает символы на каждую ячейку списка.
Для двух размерного массива

a=[["A","B","C"],["A","B","C"]]
b=[[2,3,2],[2,3,4]]
d = []
k = []
for i in range(len(a)):
    for x in range(len(a[i])):
        k.extend(a[i][x] * b[i][x])
    d.append(k)     
print(d)
→ Ссылка
Автор решения: nyekitka

Если не запариваться с однострочными программами, то самый типичный код для такой ситуации будет выглядеть так:

x = []
for i in range(len(a)):
    x += [a[i]]*b[i]
→ Ссылка
Автор решения: CameL

Можно в одну строчку, если захотелось побаловаться функциональным программированием

print(list(map(lambda x, y: [c for c in x] * y, ["A","B","C"], [2,3,2])))
→ Ссылка
Автор решения: user207200
from operator import mul
from itertools import starmap, chain

a, b = ["A","B","C"], [2,3,2]
print(list(chain(*map(list, starmap(mul, zip(a, b))))))
→ Ссылка
Автор решения: CrazyElf

Ещё один вариант с zip:

a = ["A","B","C"]
b = [2,3,2]
c = [x for i, j in zip(a, b) for x in [i] * j]
print(c)
# ['A', 'A', 'B', 'B', 'B', 'C', 'C']
→ Ссылка
Автор решения: SergFSM

с библиотекой itertools можно ужаться до такого кода:

from itertools import repeat,chain

a = ["a", "b", "c"]
b = [2, 3, 4]

c = [*chain(*map(repeat,a,b))]  
→ Ссылка
Автор решения: Stanislav Volodarskiy

Если делать по простому, то получится такой код:

a = ['A', 'B', 'C']
b = [2, 3, 2]

c = []
for s, k in zip(a, b):
    c.extend(s * k)
print(c)

Если хочется в одну строку, то так:

a = ['A', 'B', 'C']
b = [2, 3, 2]

c = [s for s, k in zip(a, b) for _ in range(k)]
print(c)
→ Ссылка