我的数组是[A,B,C]
,我想要将它相乘,这样我就可以使数组成为[A,A,A,B,B,B,C,C,C]
发布于 2018-07-31 04:16:26
您可以链接itertools.repeat
的结果
import itertools
list(itertools.chain.from_iterable(itertools.repeat(x,3) for x in ["A","B","C"]))
结果:
['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']
这个解决方案最小化了循环和临时列表(没有创建任何列表)
发布于 2018-07-31 04:17:43
使用zip
>>> l = ['A','B','C']
>>> [e for sl in zip(*[l]*3) for e in sl]
['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']
或者,您可以使用itertools.chain
来扁平化zip
生成的列表
>>> list(chain(*zip(*[l]*3)))
['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']
发布于 2018-07-31 04:31:52
如果不反对numpy
,您可以使用np.repeat
创建一个重复的原始列表数组
>>> import numpy as np
>>> np.repeat(['A','B','C'], 3)
array(['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
dtype='<U1')
如果需要,您可以使用tolist
将其转换回列表,而不是np.array
>>> np.repeat(['A','B','C'], 3).tolist()
['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']
https://stackoverflow.com/questions/51601633
复制相似问题