使用列表推导创建具有重复值的列表

-2 python list-comprehension

说列表a = [4, 8, 5, 7, 7, 7, 7, 3, 2, 2, 2, 5, 3, 3, 3, 3, 3]有没有办法用列表理解创建这个列表?

a = [4,8,5,(4乘7),3,(3乘2),5,(5乘3)]

我知道如何只使用一个重复值,而不是三个和非重复值.

Mar*_*ers 7

如果您尝试从硬编码计数创建文字列表,那么通过连接可以更容易地实现:

a = [4, 8, 5] + 4 * [7] + [3] + 3 * [2] + [5] + 5 * [3]
Run Code Online (Sandbox Code Playgroud)

如果必须使用列表推导,则必须为每个值包含一个乘数,然后使用双循环重复这些值:

# list of (count, value) pairs
inputs = [(1, 4), (1, 8), (1, 5), (4, 7), (1, 3), (3, 2), (1, 5), (5, 3)]
a = [i for count, i in inputs for _ in range(count)]
Run Code Online (Sandbox Code Playgroud)

演示:

>>> [4, 8, 5] + 4 * [7] + [3] + 3 * [2] + [5] + 5 * [3]
[4, 8, 5, 7, 7, 7, 7, 3, 2, 2, 2, 5, 3, 3, 3, 3, 3]
>>> inputs = [(1, 4), (1, 8), (1, 5), (4, 7), (1, 3), (3, 2), (1, 5), (5, 3)]
>>> [i for count, i in inputs for _ in range(count)]
[4, 8, 5, 7, 7, 7, 7, 3, 2, 2, 2, 5, 3, 3, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)