我想知道如何复制任意时间的列表中的每个元素,例如复制任意时间的列表中的每个元素
l = ['a', 'b', 'c']
在l
结果的重复元素在一个新的列表,
n = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'c', 'c']
所以 'A' 已经被重复3次, 'B' 一次, 'C' 的两倍。每个元素的重复数量由numpy.random.poisson
numpy.random.poisson(2)
。
我想知道如何复制任意时间的列表中的每个元素,例如复制任意时间的列表中的每个元素
l = ['a', 'b', 'c']
在l
结果的重复元素在一个新的列表,
n = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'c', 'c']
所以 'A' 已经被重复3次, 'B' 一次, 'C' 的两倍。每个元素的重复数量由numpy.random.poisson
numpy.random.poisson(2)
。
乘法与join
它再喂它从numpy.random.poisson(2)
返回的值,所述列表中的每个元素到list
:
r = list(''.join(i*random.poisson(2) for i in l))
对于一个运行,该随机产生:
['a', 'b', 'b', 'b', 'b', 'b', 'b', 'c', 'c', 'c']
由于你可以使用np
,我会选择Divakar的解决方案(对于比你的例子更大的列表,执行速度更快)。
>>> l = ['a', 'b', 'c']
>>> n = []
>>> for e in l:
... n.extend([e] * numpy.random.poisson(2))
...
>>> n
['a', 'a', 'b', 'c']
我刚刚意识到'np.random.poisson(2)'可能等于'0',但我喜欢将每个元素保留在列表中,如果有'np.random.poisson ([2])'是'0',如何避免它? – daiyue
@daiyue添加注释以避免这种情况。 – Divakar