Snehal Shekatkar - 4 months ago 14

Python Question

How do I explain the last line of these?

`>>> a = 1`

>>> a is a

True

>>> a = [1, 2, 3]

>>> a is a

True

>>> a = np.zeros(3)

>>> a

array([ 0., 0., 0.])

>>> a is a

True

>>> a[0] is a[0]

False

I always thought that everything is at least "is" that thing itself!

Answer

NumPy doesn't store array elements as Python objects. If you try to access an individual element, NumPy has to create a new wrapper object to represent the element, and it has to do this *every time* you access the element. The wrapper objects from two accesses to `a[0]`

are different objects, so `a[0] is a[0]`

returns `False`

.