**What is the Tilde ~ in Python? Python’s Tilde ~n operator is the bitwise negation operator: it takes the number n as binary number and “flips” all bits 0 to 1 and 1 to 0 to obtain the complement binary number. For example, the tilde operation ~1 becomes 0 and ~0 becomes 1 and ~101 becomes 010. **

But you must be careful, because the integer value `0`

is represented by many bits. For example, if you have the integer 0 represented by eight bits (one byte) `0000 0000`

, the tilde operation `~0000 0000`

results in the value `1111 1111`

which is the integer value `-1`

.

**The general formula to calculate the tilde operation ~i on an integer value i is ~i=-i-1.**

Have a look at the Python code where you convert the integer 42 with binary representation `0010 1010`

to the complement `-0010 1011`

:

>>> a = 42 >>> bin(a) '0b101010' >>> ~a -43 >>> bin(~a) '-0b101011'

Try it yourself in our interactive Python shell:

**Can you guess the output of the code in the interactive shell?** Guess first, then check if you guessed right!

If you struggle understanding how the tilde operator works on integers, have a look at the following table:

## Tilde Python Table

Here’s a table showing the results of various tilde operations on positive integer values.

Tilde Operation | Bit Transformation | Integer Result |
---|---|---|

`~0` | `~00000000-->11111111` | `-1` |

`~1` | `~00000001-->11111110` | `-2` |

`~2` | `~00000010-->11111101` | `-3` |

`~3` | `~00000011-->11111100` | `-4` |

`~4` | `~00000100-->11111011` | `-5` |

`~5` | `~00000101-->11111010` | `-6` |

`~6` | `~00000110-->11111001` | `-7` |

`~7` | `~00000111-->11111000` | `-8` |

`~8` | `~00001000-->11110111` | `-9` |

`~9` | `~00001001-->11110110` | `-10` |

`~10` | `~00001010-->11110101` | `-11` |

`~11` | `~00001011-->11110100` | `-12` |

Here’s a table showing the results of various tilde operations on negative integer values.

Tilde Operation | Bit Transformation | Integer Result |
---|---|---|

`~0` | `~00000000-->11111111` | `-1` |

`~-1` | `~11111111-->00000000` | `0` |

`~-2` | `~11111110-->` | `1` |

`~-3` | `~` | `2` |

`~-4` | `~` | `3` |

`~-5` | `~` | `4` |

`~-6` | `~` | `5` |

`~-7` | `~` | `6` |

`~-8` | `~` | `7` |

`~-9` | `~` | `8` |

`~-10` | `~` | `9` |

`~-11` | `~` | `10` |

The general formula to calculate the tilde operation `~i`

is `~i=-i-1`

.

So what’s the use of the Tilde operator?

## Tilde Python Array

You can use the tilde operator in Python when indexing list elements.

You may already know the negative indexing scheme in Python where you can access the last element of a Python list `lst`

with `lst[-1]`

and the second last element with `lst[-2]`

.

But this may feel unnatural to you because negative array indexing starts with -1 and you’re used to positive indexing that starts with 0. And here’s how the tilde operator comes into play: Use the tilde operator to transform your positive indices into negative indices as `~0=-1`

and `~1=-2`

and so on.

Here’s a graphical representation:

And here’s the code example:

>>> lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> lst[-10] 0 >>> lst[~9] 0 >>> lst[-1] 9 >>> lst[~0] 9

You can see that this may lead to more intuitive indexing for some people.

## Tilde Python Pandas

Sometimes, you’ll see the tilde operator in a Pandas DataFrame for indexing. Here’s an example:

import pandas as pd # Create a DataFrame df = pd.DataFrame([{'User': 'Alice', 'Age': 22}, {'User': 'Bob', 'Age': 24}]) print(df) ''' User Age 0 Alice 22 1 Bob 24 ''' # Use Tilde to access all lines where user doesn't contain 'A' df = df[~df['User'].str.contains('A')] print(df) ''' User Age 1 Bob 24 '''

The tilde operator negates the Boolean values in the DataFrame: `True`

becomes `False`

and `False`

becomes `True`

.

You can see this in action when printing the result of different operations:

This is the original DataFrame in the code:

print(df) ''' User Age 0 Alice 22 1 Bob 24 '''

Now apply the contains operation to find all user names that contain the character `'A'`

.

print(df['User'].str.contains('A')) ''' 0 True 1 False Name: User, dtype: bool '''

The result is a DataFrame with Boolean values that indicate whether a user contains the character `'A'`

or not.

Let’s apply the Tilde operator on the result:

print(~df['User'].str.contains('A')) ''' 0 False 1 True Name: User, dtype: bool '''

Now, we use this DataFrame to access only those rows with users that don’t contain the character `'A'`

.

df = df[~df['User'].str.contains('A')] print(df) ''' User Age 1 Bob 24 '''

Let’s have a look at some related questions.

## Tilde Python Path

## Tilde Python Use – Example Palindrome

https://medium.com/@kevingxyz/dont-look-so-listless-it-s-python-list-part-2-tilde-operator-685a2a880e4b

https://www.semicolonworld.com/question/43829/the-tilde-operator-in-python

## Tilde Python Filter

## Python Expand Tilde

## Python Escape Tilde

## Tilde Equivalent

## Tilde Regex Python

## Python Resolve Tilde

## Python Replace Tilde

## Python Unary Tilde

## Python Tilde Index

## Python Tilde Path

## Python Pathlib Tilde

## Python Print Tilde

## Python Abspath Tilde

## Python Subprocess Tilde

## Python Tilde vs Exclamation

## Python Tilde Not / Negation

## Where to Go From Here?

Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

**Practice projects is how you sharpen your saw in coding!**

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.