python - 具有重复连续数字的范围

标签 python list range sequence python-itertools

我想创建一个有一些重复(例如 4)的数字范围(例如 (1, 5)):

[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 或更紧凑的版本来生成这样的序列?

最佳答案

您可以只使用列表理解

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]

关于python - 具有重复连续数字的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50813544/

相关文章:

python - Keras 回归的模型建议

python - swig c++ 到 python 通过引用返回 unsigned char*

Python 记录器文件权限

c++ - std::list<int> 的默认构造函数可以抛出吗?

Python - 像操作字符串一样操作列表值

python - 在多个过滤条件中插入一个范围

vba - 为什么 Range 有效,但 Cells 无效?

16 位数据类型范围的混淆

c++ - 将数据从 Django 传递到 C++ 应用程序并返回

vb.net - 如何在 VB 中比较两个列表(<CustomClass>)?