Several solutions come to mind.
High level code with Counter
The easiest way is to use the elements() method for collections.Counter:
>>> from collections import Counter
>>> nums = [2, 3, 5]
>>> mylist = ["aaa", "bbb", "ccc"]
>>> list(Counter(dict(zip(mylist, nums))).elements())
['aaa', 'aaa', 'bbb', 'bbb', 'bbb', 'ccc', 'ccc', 'ccc', 'ccc', 'ccc']
Functional C-speed code with itertools
Or you can use the itertools module directly:
>>> from itertools import chain, repeat
>>> list(chain.from_iterable(map(repeat, mylist, nums)))
['aaa', 'aaa', 'bbb', 'bbb', 'bbb', 'ccc', 'ccc', 'ccc', 'ccc', 'ccc']
Native language syntax (no libraries)
To do this without libraries, a nested list comprehension would suffice:
>>> [elem for n, elem in zip(nums, mylist) for i in range(n)]
['aaa', 'aaa', 'bbb', 'bbb', 'bbb', 'ccc', 'ccc', 'ccc', 'ccc', 'ccc']