Q:

How to properly remove elements from array in loop using Python

I tried to remove only one element from an array and print remaining ones in a loop:
arr = [1,2,3,4,5]
for i in arr:
    a = arr
    a.remove(i)
    print a

So I am expecting it to print this:
[2, 3, 4, 5]
[1, 3, 4, 5]
[1, 2, 3, 5]
[1, 2, 3, 4]

Why am I gettting the following results instead:
[2, 3, 4, 5]
[2, 4, 5]
[2, 4]

A:

This is a classic problem of deep vs shallow copy.
Python copies the array by reference. So, any changes to the new variable (a in your case) will be reflected in the main array (arr). Removing element from a also remove elements from arr.
You need to use following for creating a copy.
 a = arr[:] 

This will not remove any elements from arr.

