生成数字序列Python

8qgya5xd  于 2023-02-21  发布在  Python
关注(0)|答案(3)|浏览(143)

我想生成一个数字序列,重复两个连续的数字两次,然后跳过一个数字,并在指定的范围内重复该序列。
例如
0、0、1、1、3、3、4、4、6、6、7、7等等。
我目前所拥有的

numrange = 10
numsequence  = [i for i in range(numrange) for _ in range(2)]
numsequence

其产生

[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]

很接近但不是我想要的

iqih9akk

iqih9akk1#

您可以使用步骤3迭代数字:

[i + j for i in range(0, numrange, 3) for j in (0, 0, 1, 1)]

输出:

[0, 0, 1, 1, 3, 3, 4, 4, 6, 6, 7, 7, 9, 9, 10, 10]
mqkwyuun

mqkwyuun2#

[i+i//2 for i in range(2*(numrange+1)//3) for _ in range(2)]

是众多方法中的一种。这一种可能是最接近你的尝试。

jobtbby3

jobtbby33#

你可以简单地插入if ~i % 3(或if i % 3 < 2,但它的乐趣在哪里:-)。

numrange = 10
numsequence = [
    i
    for i in range(numrange)
    if ~i % 3
    for _ in range(2)
]
print(numsequence)

输出(在线试用!):

[0, 0, 1, 1, 3, 3, 4, 4, 6, 6, 7, 7, 9, 9]

相关问题