首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:如何使数组中的每个术语重复,并将相同的术语组合在一起

Python:如何使数组中的每个术语重复,并将相同的术语组合在一起
EN

Stack Overflow用户
提问于 2018-07-31 04:12:18
回答 6查看 111关注 0票数 3

我的数组是[A,B,C],我想要将它相乘,这样我就可以使数组成为[A,A,A,B,B,B,C,C,C]

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-07-31 04:16:26

您可以链接itertools.repeat的结果

代码语言:javascript
复制
import itertools
list(itertools.chain.from_iterable(itertools.repeat(x,3) for x in ["A","B","C"]))

结果:

代码语言:javascript
复制
['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']

这个解决方案最小化了循环和临时列表(没有创建任何列表)

票数 4
EN

Stack Overflow用户

发布于 2018-07-31 04:17:43

使用zip

代码语言:javascript
复制
>>> 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生成的列表

代码语言:javascript
复制
>>> list(chain(*zip(*[l]*3)))
['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']
票数 4
EN

Stack Overflow用户

发布于 2018-07-31 04:31:52

如果不反对numpy,您可以使用np.repeat创建一个重复的原始列表数组

代码语言:javascript
复制
>>> 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

代码语言:javascript
复制
>>> np.repeat(['A','B','C'], 3).tolist()
['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51601633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档