我想知道如何複製任意時間的列表中的每個元素,例如複製任意時間的列表中的每個元素
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