#### Equality and Identity

Python is full of neat tips and tricks and something worth noting are the different ways to indicate equality, and how these specific two ways are different.

The `==` and `is` command both indicate some form of equality and are often used interchangeably. However, this isn’t exactly correct. To be clear, the `==` command checks for equality and the `is` operator, however, compares the identities of the objects.

In what follows, i’ll quickly explain the difference between the both, including code examples.

To understand this better, let’s look at some Python Code. First, let’s create a new list object and name it `a`, and then define another variable `b` that points to the same list object:

`>>> a = [5, 5, 1]>>> b = a`

Let’s first print out these two variables to visually confirm that they look similar:

`>>> a[5, 5, 1]>>> b[5, 5, 1]`

As the two objects look the same we’ll get the expected result when we compare them for equality using the `==` operator:

`>>> a == bTrue`

This is because the `==` operator is looking for equality. On the other hand, that doesn’t tell us if `a` and `b` are pointing to the same object.

Now, we know they do because we set them as such earlier, but imagine a situation where we didn’t know—how can we find out?

If we simply compare both variables with the `is` operator, then we can confirm that both variables are in fact pointing to the same object:

`>>> a is bTrue`

Digging deeper with examples, let’s see what happens when we make a copy of our object. We can do this by calling `list()` on the existing list to create a copy that we’ll name `c`:

`>>> c = list(a)`

Now again, you’ll see that the new object we just created looks identical to the list object pointed to by `a` and `b`:

`>>> c[5, 5, 1]`

Now this is where it gets interesting. When we compare our copy `c` with the initial list `a` using the `==` operator. What answer do you expect to see?

`>>> a == cTrue`

This is expected because the contents of the object are identical, and as such, they’re considered equivalent by Python. However, they are actually pointing to different objects, identified by using the `is` command:

`>>> a is cFalse`

Being able to differentiate between identity and equality is a simple but important step in learning the complete scope of Python. These neat tips and tricks have helped me as a Data Scientist improve not only my coding skills, but also my analytics.

Thanks again for taking the time to read! Please message me if you have any questions, always happy to help!

Keep up to date with my latest work here!