根据值列表重复每个元素

2024-03-28 21:32:48 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有一个Python内置函数根据另一个列表中的相应值重复列表中的每个元素?例如,列表x中的A由于列表y中位置0的值2,因此重复了2次。在

>>> x = ['A', 'B', 'C']
>>> y = [2, 1, 3]
>>> f(x, y)
['A', 'A', 'B', 'C', 'C', 'C']

或者换个角度说,实现这个操作最快的方法是什么?在


Tags: 方法函数元素列表内置角度
3条回答
from itertools import chain

list(chain(*[[a] * b for a, b in zip(x, y)]))
['A', 'A', 'B', 'C', 'C', 'C']

还有itertools.repeat,但对于这个特殊的例子来说,它最终会变得更丑。在

只需使用一个简单的列表理解:

>>> x = ['A', 'B', 'C']
>>> y = [2, 1, 3]
>>> [x[i] for i in range(len(x)) for j in range(y[i])]
['A', 'A', 'B', 'C', 'C', 'C']
>>> 

一种方法是

x = ['A', 'B', 'C']
y = [2, 1, 3]

s = []
for a, b in zip(x, y):
    s.extend([a] * b)

print(s)

结果

^{pr2}$

相关问题 更多 >