w = [1, 2, 3, -3, -2, 4, -4, 1, 2, -2] def data_remover(xarray, ind): for i in ind: del xarray[i] return xarray print(data_remover(w, [2, 3, 5, 6, 8, 9]))

I am trying to write a code such that it removes adjacent (+n, -n) pairs such as (3,-3) (4,-4) etc.

However I cannot use `del[i]`

since when I remove an element the xarray also changes. I tried to use `deepcopy`

to copy the x array but I couldnt manage to run the code.

from copy import deepcopy w = [1, 2, 3, -3, -2, 4, -4, 1, 2, -2] def data_remover(xarray, ind): xcopy = deepcopy(xarray) for i in ind: del xarray[i] return xarray print(data_remover(w, [2, 3]))

You can sort the list of indices in descending order so that deleting an element will not effect the position of another. You can do this by `reversed(ind)`

w = [1, 2, 3, -3, -2, 4, -4, 1, 2, -2] def data_remover(xarray, ind): for i in reversed(ind): del xarray[i] return xarray print(data_remover(w, [2, 3, 5, 6, 8, 9]))

Or if your indices are not in any order you can always sort them in descending order.

for i in sorted(ind, reverse = True):

## Recent Comments