2024-03-28 21:32:48 发布
网友
是否有一个Python内置函数根据另一个列表中的相应值重复列表中的每个元素?例如,列表x中的A由于列表y中位置0的值2,因此重复了2次。在
x
A
y
2
>>> x = ['A', 'B', 'C'] >>> y = [2, 1, 3] >>> f(x, y) ['A', 'A', 'B', 'C', 'C', 'C']
或者换个角度说,实现这个操作最快的方法是什么?在
from itertools import chain list(chain(*[[a] * b for a, b in zip(x, y)])) ['A', 'A', 'B', 'C', 'C', 'C']
还有itertools.repeat,但对于这个特殊的例子来说,它最终会变得更丑。在
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)
结果
还有
itertools.repeat
,但对于这个特殊的例子来说,它最终会变得更丑。在只需使用一个简单的列表理解:
一种方法是
结果
^{pr2}$相关问题 更多 >
编程相关推荐