我有一个大小(例如1201)和任意列表(例如[1,2,3])
我想使列表中的1200个值更长,大致相等地重复每个不同的值。因此,在这种情况下,新列表将是[1,1,...,2,2 ...,3,3],其中有400 1s,400 2s和401 3s。
也许我没有很好地解释-不必平均重复,例如,如果有一个奇数。
答案 0 :(得分:0)
>>> a = [1, 2, 3]
>>> size = 1201
>>> num_repeats = int(size / len(a))
>>> [val for val in a for _ in range(num_repeats)]
[1, 1, ... 2, 2, ... 3, 3, ...]
这将使您尽可能接近甚至使用重复项。从这里,您需要确定分布的“粗糙度”以达到所需的大小。如果您不能决定,我想随机插入会得到某种结果:
from random import randrange
result = [val for val in a for _ in range(num_repeats)])
while len(result) < size:
index = randrange(len(random) + 1)
result.insert(index, result[index])
请注意,
_
是不需要使用的变量的占位符。