我的数组是[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
复制相似问题