如何获取范围内的列表输出

时间:2020-09-20 16:54:44

标签: python python-3.x python-2.7

我们如何获取范围内的列表输出?

假设n = 4,k = 3

那么我们如何获得列表[1,2,3,1],其中数组的长度为n,k为范围(1 .... k)

ex -2

如果n = 5且k = 3

列表将为[1,2,3,1,2]

6 个答案:

答案 0 :(得分:1)

您可以使用itertools.cycle循环显示从1到k的值,然后使用itertools.islice 从中获取n个值:

from itertools import cycle, islice

k = 3
n = 7

k_cycle = cycle(range(1, k+1))

out = list(islice(k_cycle, n))

print(out)
# [1, 2, 3, 1, 2, 3, 1]

答案 1 :(得分:1)

简短解决方案:

[i % k + 1 for i in range(n)]

和另一个更长的解决方案:

[i for j in range((n + k - 1) // k) for i in range(1, k + 1)][:n]

与上面类似,但表达方式不同

(list(range(1, k + 1)) * ((n + k - 1) // k))[:n]

答案 2 :(得分:0)

尝试一下

n,k = map(int,input().strip().split())
x=[]
for i in range(n):
    x.append(1+i%k)
print(x)

答案 3 :(得分:0)

尝试一下:

n = 5
k = 3
current_number = 1
ls = []
for count in range(n):
    ls.append(current_number)
    current_number = ((current_number) % k) + 1

答案 4 :(得分:0)

使用itertools.cycle

的解决方案
def rangelist(n, k):
    return [i for i,_ in zip(cycle(range(1,k+1)), range(n))]
rangelist(n=5,k=3)
>>> [1, 2, 3, 1, 2]

答案 5 :(得分:0)

您可以使用itertools完成它:

import itertools  
k,n = 3, 5    
result = []    
# defining iterator  
iterators = itertools.cycle(list(range(1,k+1)))  
# for in loop  
for i in range(n):    
    x.append(next(iterators))

print(x)