Alvaro Joao - 1 year ago 83

Python Question

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`

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

where

`i = 9`

`[9:11]+[0:7]`

`i = 1`

`[1:11]`

thanks for the help

`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

I can't make any

`import`

Answer Source

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