Question: I am attempting a Python practice problem on GeeksForGeeks, but my code raises IndexError every time.

The problem is as follows:

> 
> Given a sorted array of positive integers `arr`, and an integer `n` which represents the length of `arr`, your task is to rearrange the array elements alternatively i.e first element should be max value, second should be min value, third should be second max, fourth should be second min and so on.
> Note: Modify the original array itself.
> 
> 
> 

My code however raises `IndexError: list index out of range`

Here is my code:

```
def rearrange(arr, n):
        arr1,arr2 = sorted(arr[:(n//2)]), sorted(arr[(n//2):],reverse=True)
        arr.clear()
        for i in range(n):
            arr.append(arr2[0]); arr2.pop(0)
            arr.append(arr1[0]); arr1.pop(0)

```

Here is the error:

```
File &quot;/home/4c7d0350d40e21b84be527508f21cb47.py&quot;, line 9, in rearrange
    arr.append(arr2[0]); arr2.pop(0)
IndexError: list index out of range

```

I don't understand why this is happening. Can anyone provide an explanation?

Answer: 
In your code, both arr1 and arr2 are initialized with a length of `n//2`. In your for loop:

```py
for i in range(n):
    arr.append(arr2[0]); arr2.pop(0)
    arr.append(arr1[0]); arr1.pop(0)

```

You access the first element and remove the first element `n` times! This requires there to be `n` elements in `arr1` and `arr2`, but there are not this many. So, you keep trying to access the 0 index element of the array even after the array is empty, which causes this error.
An index out of range means you are trying to access an item in your list at an index that does not exist.