¿Cómo multiplicar una lista de texto por una lista de enteros y obtener una larga lista de texto?

Esto es para Python 3. Tengo dos listas:

lista = ['foo', 'bar']
listb = [2, 3]

Estoy tratando de obtener:

newlist = ['foo', 'foo', 'bar', 'bar', 'bar']

Pero estoy atascado. Si lo intento:

new_list = []
for i in zip(lista, listb):
    new_list.append([i[0]] * i[1])

Yo obtengo:

[['foo', 'foo'], ['bar', 'bar', 'bar']]

Sé que esto funciona, pero no siempre sabré el contenido de cada lista.

new_list = ['foo'] * 2 + ['bar'] * 3

¡Gracias por adelantado!

Respuestas a la pregunta(3)

Su respuesta a la pregunta