Python如何循环获取数组中预先固定数量的元素

Alv*_*oao 5 python arrays circular-list

我正在尝试创建一个函数,它总是会从数组中返回一个预先固定数量的元素,这些元素将大于预定数字:

def getElements(i,arr,size=10):
    return cyclic array return
Run Code Online (Sandbox Code Playgroud)

where i表示要获取的数组索引并arr表示所有元素的数组:

例:

a = [0,1,2,3,4,5,6,7,8,9,10,11]
b = getElements(9,a)
>> b
>> [9,10,11,0,1,2,3,4,5,6]
b = getElements(1,a)
>> b
>> [1,2,3,4,5,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)

where i = 9和数组返回[9:11]+[0:7]完成10个元素,i = 1不需要循环数组得到[1:11]

谢谢您的帮助

初始代码(不工作):

def getElements(i,arr,size=10):
    total = len(arr)
    start = i%total
    end = start+size
    return arr[start:end]

#not working cos not being cyclic
Run Code Online (Sandbox Code Playgroud)

编辑:

我不能import为这个剧本制作任何东西

Ami*_*ory 3

你可以回来

array[i: i + size] + array[: max(0, i + size - len(array))]
Run Code Online (Sandbox Code Playgroud)

例如

In [144]: array = list(range(10))

In [145]: array
Out[145]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [146]: i, size = 1, 10

In [147]: array[i: i + size] + array[: max(0, i + size - len(array))]
Out[147]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

In [148]: i, size = 2, 3

In [149]: array[i: i + size] + array[: max(0, i + size - len(array))]
Out[149]: [2, 3, 4]

In [150]: i, size = 5, 9

In [151]: array[i: i + size] + array[: max(0, i + size - len(array))]
Out[151]: [5, 6, 7, 8, 9, 0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)