首页 > 解决方案 > 具有重复连续数字的范围

问题描述

我想创建一个数字范围(例如(1, 5)),其中包含一些重复(例如 4):

[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]

一种方法是写:

list(itertools.chain(*([x] * 4 for x in range(1, 5))))

或类似地:

list(itertools.chain(*(itertools.repeat(x, 4) for x in range(1, 5))))

然而,有一个平坦的步骤,这是可以避免的。

是否有更 Pythonic 或更紧凑的版本来生成这样的序列?

标签: pythonlistrangesequenceitertools

解决方案


您可以只使用列表推导。

l = [i for i in range(1, 5) for _ in range(4)]

输出

[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]

推荐阅读