I am quite experienced with Python, but recently, when I was looking at the solutions for the codility sample tests I encountered the operators -=
, +=
,
As almost any modern language, python has Assignment Operators so they can use them every time you want to assign a value to a variable after doing some arithmetic or logical operation, both (assignment and operation)are expressed compact way in one statement....
When you compute X = X + Y
you are actually returning the sum of X
and Y
into a new variable, which, in your example, overwrites the previous value of X
. When you use an assignment operator in the form of X += 1
, the value 1
is directly summed on the current value of X
, without returning the result in a new variable. Take a look at the code below:
>>> V = np.arange(10)
>>> view = V[3:] # view is just a subspace (reference) of the V array
>>> print(V);print(view)
[0 1 2 3 4 5 6 7 8 9]
[3 4 5 6 7 8 9]
>>> view = view + 3 # add view to a constant in a new variable
>>> print(V);print(view)
[0 1 2 3 4 5 6 7 8 9]
[ 6 7 8 9 10 11 12]
>>> view = V[3:]
>>> view += 3 # here you actually modify the value of V
>>> print(V);print(view)
[ 0 1 2 6 7 8 9 10 11 12]
[ 6 7 8 9 10 11 12]
You can also look for the documentation of numpy.ndarray.base
to check if an array is actually a reference of another array.