Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,固定长度序列以增量重复_Python - Fatal编程技术网

在python中,固定长度序列以增量重复

在python中,固定长度序列以增量重复,python,Python,寻找一种pythonic方法来重复固定长度的序列,同时增加序列位数,直到达到最大长度 到目前为止,代码使用while循环和四个变量1作为列表本身来完成如下逻辑: l = [] i, repeat, max_len = 0, 3, 20 while True: if len(l) + repeat <= max_len: l.extend([i] * repeat) else: repeat = max_len - len(l)

寻找一种pythonic方法来重复固定长度的序列,同时增加序列位数,直到达到最大长度

到目前为止,代码使用while循环和四个变量1作为列表本身来完成如下逻辑:

l = []
i, repeat, max_len = 0, 3, 20
while True:
    if len(l) + repeat <= max_len:
        l.extend([i] * repeat)
    else:
        repeat = max_len - len(l)
        l.extend([i] * repeat)
        break
    i += 1
上面的代码生成

l=[0,0,0,1,1,1,2,2,3,3,4,4,4,5,5,6,6]

因此,重复3个单元的固定长度序列,直到达到最大长度20为止,忽略允许的最大长度之外的序列的任何最后数字

有没有类似于蟒蛇的方法呢?

这个怎么样:

[int(i/repeat) for i in range(max_len)]
这个怎么样:

[int(i/repeat) for i in range(max_len)]

这将使用列表理解准确地列出您的列表

l = [i//(repeat) for i in range(max_len)]
# [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6] 
但是我认为原来的函数有一个bug,因为最后应该有三个5s

l = [i//(repeat) for i in range(max_len//repeat * repeat)]
# [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]

这将使用列表理解准确地列出您的列表

l = [i//(repeat) for i in range(max_len)]
# [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6] 
但是我认为原来的函数有一个bug,因为最后应该有三个5s

l = [i//(repeat) for i in range(max_len//repeat * repeat)]
# [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]

列表理解

>>> i, repeat, max_len = 0, 3, 20
>>> q = max_len//repeat
>>> [x for x in range(i, i+q) for y in range(repeat)]+[i+q for y in range(max_len%repeat)]
[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6]
使用不同的起始值:

>>> i = 5
>>> [x for x in range(i, i+q) for y in range(repeat)]+[i+q for y in range(max_len%repeat)]
[5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11]

列表理解

>>> i, repeat, max_len = 0, 3, 20
>>> q = max_len//repeat
>>> [x for x in range(i, i+q) for y in range(repeat)]+[i+q for y in range(max_len%repeat)]
[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6]
使用不同的起始值:

>>> i = 5
>>> [x for x in range(i, i+q) for y in range(repeat)]+[i+q for y in range(max_len%repeat)]
[5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11]

原始函数中有一个bug,不,实际上应该达到最大值原始函数中有一个bug,不,实际上应该达到最大值这不包括i!=0这不包括我的情况!=0