我想创建一个有一些重复(例如 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/