使用另一个列表中的n重复列表中的元素n次

Jos*_*eph -1 python list repeat

也许这之前被问过,在这种情况下我会删除这个问题,但我有两个列表:

occurence_list = [1, 2, 3, 4, 5]
value_list = [10, 20, 30, 40, 50]
Run Code Online (Sandbox Code Playgroud)

我希望每个值看起来与另一个列表中相同索引的值相同:

result = [10, 20, 20, 30, 30, 30, 40, 40, 40, 40, 50, 50, 50, 50, 50]
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?

Kas*_*mvd 5

使用itertools.repeat()chain():

In [6]: from itertools import repeat, chain

In [7]: list(chain.from_iterable(repeat(i, j) for i, j in zip(value_list, occurence_list)))
Out[7]: [10, 20, 20, 30, 30, 30, 40, 40, 40, 40, 50, 50, 50, 50, 50]
Run Code Online (Sandbox Code Playgroud)

不是通过连接重复对象chain.from_iterable然后将结果转换为列表,您还可以使用嵌套列表推导:

In [12]: [t for i, j in zip(value_list, occurence_list) for t in repeat(i, j)]
Out[12]: [10, 20, 20, 30, 30, 30, 40, 40, 40, 40, 50, 50, 50, 50, 50]
Run Code Online (Sandbox Code Playgroud)