创建一个具有重复值的列表

2024-04-25 15:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

假设一个列表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)]

我知道如何只使用一个重复值,而不是三个值和中间不重复的值。你知道吗


Tags: 方法列表
1条回答
网友
1楼 · 发布于 2024-04-25 15:21:37

如果您试图从硬编码计数创建一个文本列表,那么通过串联可以更容易地实现这一点:

a = [4, 8, 5] + 4 * [7] + [3] + 3 * [2] + [5] + 5 * [3]

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

# 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)]

演示:

>>> [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]

相关问题 更多 >