我想生成一个数字序列,重复两个连续的数字两次,然后跳过一个数字,并在指定的范围内重复该序列。例如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]
很接近但不是我想要的
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]
mqkwyuun2#
[i+i//2 for i in range(2*(numrange+1)//3) for _ in range(2)]
是众多方法中的一种。这一种可能是最接近你的尝试。
jobtbby33#
你可以简单地插入if ~i % 3(或if i % 3 < 2,但它的乐趣在哪里:-)。
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]
3条答案
按热度按时间iqih9akk1#
您可以使用步骤3迭代数字:
输出:
mqkwyuun2#
是众多方法中的一种。这一种可能是最接近你的尝试。
jobtbby33#
你可以简单地插入
if ~i % 3
(或if i % 3 < 2
,但它的乐趣在哪里:-)。输出(在线试用!):