Alvaro Joao - 1 month ago 5x
Python Question

# Python how cyclic fetch a pre-fixed number of elements in array

I'm trying to make a function that will always return me a pre-fixed number of elements from an array which will be larger than the pre-fixed number:

``````def getElements(i,arr,size=10):
return cyclic array return
``````

where
`i`
stands for index of array to fetch and
`arr`
represent the array of all elements:

## Example:

``````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]
``````

where
`i = 9`
and the array return the
`[9:11]+[0:7]`
to complete 10 elements with
`i = 1`
don't need to cyclic the array just get
`[1:11]`

thanks for the help

## Initial code (not working):

``````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
``````

## EDIT:

I can't make any
`import`
for this script

You could return

``````array[i: i + size] + array[: max(0, i + size - len(array))]
``````

For example

``````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]
``````