【发布时间】:2018-01-29 15:41:36
【问题描述】:
我有一个带有数字的列表:
numbers = [1, 2, 3, 4].
我想要一个列表,他们重复n 次(对于n = 3):
[1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4].
问题是我只想为此使用itertools,因为我的性能非常有限。
我尝试使用这个表达式:
list(itertools.chain.from_iterable(itertools.repeat(numbers, 3)))
但它给了我这样的结果:
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
这显然不是我需要的。
有没有办法只使用itertools,而不使用排序、循环和列表推导?我能得到的最接近的是:
list(itertools.chain.from_iterable([itertools.repeat(i, 3) for i in numbers])),
但它也使用列表理解,我想避免。
【问题讨论】:
-
您是否有避免列表推导的原因?它们非常快,而且性能通常与
itertools一样。 -
同样的问题,但对 itertools 没有限制:Repeating elements of a list n times
标签: python performance list iteration itertools