python - 具有重复连续数字的范围
问题描述
我想创建一个数字范围(例如(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 或更紧凑的版本来生成这样的序列?
解决方案
您可以只使用列表推导。
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]
推荐阅读
- pandas - Pandas 通过基于其他列值的平均值来删除列
- c++ - 如何搜索在单词中添加字母的所有可能组合?
- c# - 为什么使用 Assembly.ReflectionOnlyLoadFrom() 而不是使用 Assembly.LoadFrom() 进行接口比较失败?
- angular - 带有登录模式的Angular 8拦截401
- observable - RxJs 管道在加载时保存数据,在加载时发出,在加载时允许发出
- bash - 在google colab中执行shell文件时没有这样的文件或目录
- java - 如何从名称中获取任意枚举的实例作为字符串
- c - C中的百分比计算
- react-admin - 向 react-admin 应用栏添加自定义按钮
- sql - 选择查询 - 如何在查询执行时显示结果