How to Check Element Not in a List in Python

Manav Narula Feb 02, 2024
  1. Use not in to Check if an Element Is Not in a List in Python
  2. Use the __contains__ Method to Check if an Element Is Not in a List in Python
  3. Use List Comprehensions to Check if an Element Is Not in a List in Python
  4. Conclusion
How to Check Element Not in a List in Python

Python is a versatile and powerful programming language known for its simplicity and readability. When working with lists in Python, it is essential to be able to determine whether a specific element is present or not.

While checking if an element is in a list is straightforward, there are also cases where you need to check if an element is not in a list. In this article, we will explore various techniques to accomplish this task.

Use not in to Check if an Element Is Not in a List in Python

When working with lists, one common task is determining whether a particular element is present within the list. Python provides the in operator for precisely this purpose, returning True if the element is found and False if it isn’t.

Let’s start by exploring the in operator briefly:

x = 3 in [1, 2, 5]
y = 1 in [1, 2, 5]
print(x)
print(y)

Output:

False
True

In the code snippet above, we utilize the in operator to verify the presence of elements within lists. However, the real question we’ll address in this article is, how do we check if an element is not in the list?

The not in operator in Python complements the in operator by checking for the absence of an element in a list. By applying the not logical operator, which effectively toggles True to False and vice versa, we can determine if an element is missing within the list.

Let’s illustrate this concept:

numbers = [1, 2, 3, 4, 5]

number_to_check = 6
is_not_in_list = number_to_check not in numbers

if is_not_in_list:
    print(f"{number_to_check} is not in the list.")
else:
    print(f"{number_to_check} is in the list.")

Here, we start by defining a list named numbers, which contains a sequence of numbers from 1 to 5.

We then specify the number_to_check variable with the value 6, which is the number we want to check for in the list.

The is_not_in_list variable is assigned the result of the expression number_to_check not in numbers. This expression uses the not in operator to check if the value of number_to_check is not present in the numbers list.

It will return True if the number is not in the list and False if it is.

Finally, we use a conditional statement to print the result. If is_not_in_list is True, it means that the number is not in the list, and we print a message indicating this; otherwise, if is_not_in_list is False, we print a message indicating that the number is in the list.

Output:

6 is not in the list.

In this example, we checked if the number 6 is not in the list [1, 2, 3, 4, 5]. Since 6 is not present in the list, the code correctly prints the message 6 is not in the list. This demonstrates how to use the not in operator to perform absence checks in Python, providing a clear and intuitive way to determine if an element is not in a list.

Use the __contains__ Method to Check if an Element Is Not in a List in Python

While the in and not in operators provide a straightforward and widely accepted way to perform such checks, Python also offers an alternative method known as __contains__.

The __contains__ method is a special or magic function, also known as a dunder method (short for double underscore), that is associated with Python classes. Its primary purpose is to determine whether a particular element exists within an object.

In the context of lists, this method allows us to check for the presence or absence of an element within the list.

Here’s a glimpse of how the __contains__ method works:

# Using __contains__ to check if an element is in a list
result = my_list.__contains__(element)
  • my_list: The list in which we want to check for the presence of an element.
  • element: The element we want to check for within the list.
  • result: A boolean value (True or False) indicating whether the element is present in the list.

It’s important to note that while you can use the __contains__ method in your code, it’s not the most recommended or Pythonic way to perform such checks. Python emphasizes readability and simplicity, and the in and not in operators are the standard methods for checking element presence in a list.

Using the __contains__ method directly might make your code less intuitive and less aligned with Python’s best practices.

Let’s illustrate how to use the __contains__ method to check if an element is not in a list through a practical example:

languages = ["Python", "Java", "C++", "JavaScript", "Ruby"]

is_not_in = not languages.__contains__("Swift")

if is_not_in:
    print("Swift is not in the list of programming languages.")
else:
    print("Swift is in the list of programming languages.")

In this code example, we define a list called languages that contains the names of various programming languages.

We then use the __contains__ method to check if the string "Swift" is not present in the languages list. The result is stored in the is_not_in variable.

Next, we employ a conditional statement to print the result. If is_not_in is True, it means that Swift is not in the list, and the code prints the message Swift is not in the list of programming languages.

Otherwise, if is_not_in is False, it prints the message Swift is in the list of programming languages.

While using the __contains__ method directly might not be the most Pythonic approach in most cases, there are scenarios where it can be beneficial:

  1. If you are working with custom classes or objects and want to implement your logic for element presence checks, the __contains__ method can be customized to suit your needs.

  2. In advanced use cases where you need to perform non-standard or complex checks, the __contains__ method provides the flexibility to define custom behavior.

  3. Understanding and using the __contains__ method can be a valuable exercise in exploring Python’s magic methods and object-oriented programming.

Use List Comprehensions to Check if an Element Is Not in a List in Python

List comprehensions are a powerful and concise feature in Python that allows you to create new lists by applying an expression to each item in an existing list (or any iterable). While they are commonly used to filter and transform data, list comprehensions can also be a handy tool to check if an element is not in a list.

Before we dive into checking for the absence of an element, let’s have a quick look at how list comprehensions work. A basic list comprehension has the following structure:

new_list = [expression for item in iterable if condition]
  • expression: The value to be included in the new list.
  • item: A variable that represents each item in the iterable.
  • iterable: The source of data (e.g., a list, tuple, or any iterable).
  • condition: An optional filter that determines whether the expression is included.

Now that we understand list comprehensions let’s see how we can use them to check if an element is not in a list.

List comprehensions are often associated with creating new lists, but they can also be used for checking conditions and returning True or False. To check if an element is not in a list, we can use the following structure:

is_not_in = not any(item == target for item in iterable)
  • is_not_in: A Boolean variable indicating whether the target is not in the iterable.
  • item: A variable representing each item in the iterable.
  • target: The element we want to check for absence.
  • iterable: The list in which we are checking for the absence of target.

In the code above, we use the any() function to check if any element in the iterable satisfies the given condition. The condition item == target checks if the current item is equal to the target element.

If any element in the iterable is equal to the target, any() returns True. By negating it with not, we get True if the element is not in the list.

Let’s look at some practical examples to see how list comprehensions can be used to check for the absence of elements in a list.

Example 1: Checking for a Number

numbers = [1, 2, 3, 4, 5]
target = 6

is_not_in = not any(item == target for item in numbers)
print(is_not_in)

Output:

True

First, a list named numbers is defined, which contains the numbers [1, 2, 3, 4, 5]. This is the list in which we want to check for the absence of the target number.

The target variable is assigned the value 6. This is the number we want to check for in the numbers list.

The core of the code is the following line:

is_not_in = not any(item == target for item in numbers)

Let’s break down what happens in this line. It uses a generator expression inside the any() function to iterate through the numbers list.

For each item in the numbers list, it checks if item is equal to the target number using the comparison item == target.

The any() function returns True if any of the comparisons in the generator expression is True. In other words, it checks if at least one element in the numbers list is equal to the target.

Finally, the not operator is applied to negate the result. So, is_not_in will be True if there is no element in the numbers list that is equal to the target.

The code then prints the value of the is_not_in variable using the print() function.

Example 2: Checking for a String

fruits = ["apple", "banana", "cherry", "date"]
target = "grape"

is_not_in = not any(item == target for item in fruits)
print(is_not_in)

Output:

True

First, a list named fruits is defined, which contains the strings ["apple", "banana", "cherry", "date"]. This is the list in which we’ll search for the absence of the target fruit.

The target variable is assigned the value "grape". This is the fruit we want to check for in the fruits list.

The main part of the code is the following line:

is_not_in = not any(item == target for item in fruits)

This line uses a generator expression inside the any() function to iterate through the fruits list. For each item in the fruits list, it checks if item is equal to the target fruit using the comparison item == target.

The any() function returns True if any of the comparisons in the generator expression is True. It checks if at least one element in the fruits list is equal to the target.

Finally, the not operator is applied to negate the result. So, is_not_in will be True if there is no element in the fruits list that is equal to the target fruit.

The code then prints the value of the is_not_in variable using the print() function.

Advantages of using list comprehensions for absence checks:

  1. List comprehensions offer a concise way to check for the absence of an element in a list, reducing the need for extensive code.

  2. The use of list comprehensions explicitly conveys the intent of checking for absence, making the code more readable and understandable.

  3. List comprehensions can be used for various data types and conditions, making them a versatile tool for absence checks.

  4. List comprehensions are efficient and performant, ensuring your code runs smoothly even with large data sets.

Conclusion

Using the not in operator in Python offers a clear solution for determining the absence of an element in a list. While the in operator efficiently confirms the presence of elements, its counterpart, the not in operator, serves as a valuable tool in absence checks, ensuring code readability and simplicity.

Additionally, we briefly touched on the alternative approach of using the __contains__ method, though emphasizing that adhering to Python’s best practices supports the use of the in and not in operators for clarity and code maintainability.

Furthermore, the exploration of list comprehensions demonstrates their utility in absence checks, contributing to a more streamlined and understandable code structure, allowing for versatile conditions and efficient handling of various data types.

Overall, leveraging the not in operator and list comprehensions enhances the programming experience in Python, ensuring a more readable, concise, and effective codebase.

Author: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Related Article - Python List