Python | Check whether a list is empty or not

There are various ways in which a list can be checked in Python, but all are not appropriate or in the terms of Python, “pythonic”, to implement.

  1. Let’s see how we can check a list is empty or not, in a less pythonic way. We should avoid this way of explicitly checking for a sequence or list
    Example:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # Python code to check for empty list
    # Explicit way
    def Enquiry(lis1):
        if len(lis1) == 0:
            return 0
        else:
            return 1
              
    # Driver Code
    lis1 = []
    if Enquiry(lis1):
        print ("The list is not empty")
    else:
        print("Empty List")

    chevron_right

    
    

    Output:

    Empty List
    
  2. Now let’s see a more pythonic way to check for an empty list. This method of check is an implicit way of checking and more preferable than the previous one.
    Example:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # Python code to check for empty list
    # IMPLICIT way or Pythonic way
    def Enquiry(lis1):
        if not lis1:
            return 1
        else:
            return 0
              
    # Driver Code
    lis1 = []
    if Enquiry(lis1):
        print ("The list is Empty")
    else:
        print ("The list is not empty")

    chevron_right

    
    

    Output:

    The list is Empty

Numpythonic way

  1. The previous methods that we used in normal Python don’t work for the numpythonic way. Other methods that work fine for lists or other standard containers fail for numpy arrays. This way fails with numpy arrays because numpy tries to cast the array to an array of bools and if this tries to evaluate all of those bools at once for some kind of aggregate truth value, it fails so we get a ValueError.
    Example 1:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # Numpythonic way with the previous method
    # Returns ValueError
    import numpy
    def Enquiry(lis1):
        return(numpy.array(lis1))
          
    # Driver Code
    lis1 = [0, 1]
    if Enquiry(lis1):
        print("Not Empty")
    else:
        print("Empty")

    chevron_right

    
    

    Output:

    None

    Error:

    Traceback (most recent call last):
      File "/home/2d237324bb5211d7216c521441a750e9.py", line 7, in 
        if Enquiry(lis1):
    ValueError: The truth value of an array with more than 
    one element is ambiguous. Use a.any() or a.all()
  2. In the next example, we will see that even if the list is Not Empty, the output will show Empty. If the list contains one 0, then the if statement will incorrectly result.
    Example 2:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # Numpythonic way with the previous method
    # Returns wrong result
    import numpy
    def Enquiry(lis1):
        return(numpy.array(lis1))
          
    # Driver Code
    lis1 = [0, ]
    if Enquiry(lis1):
        print("Not Empty")
    else:
        print("Empty")

    chevron_right

    
    

    Output:

    Empty
  3. Making the Numpythonic way work

    1. If we have a numpy array then correct method in all cases, is to use if .size. This size checks the size of the arrays and return True or False accordingly.
      Example:

      filter_none

      edit
      close

      play_arrow

      link
      brightness_4
      code

      # Numpythonic way to check emptiness
      # Use of size
      import numpy
      def Enquiry(lis1):
          return(numpy.array(lis1))
            
      # Driver Code
      lis1 = []
      if Enquiry(lis1).size:
          print("Not Empty")
      else:
          print("Empty")

      chevron_right

      
      

      Output:

      Empty
    2. Example 2:
      This example shows the other case with a single 0 element, which failed in the previous cases.

      filter_none

      edit
      close

      play_arrow

      link
      brightness_4
      code

      # Numpythonic way to check emptiness
      # Use of size
      import numpy
      def Enquiry(lis1):
          return(numpy.array(lis1))
            
      # Driver Code
      lis1 = [0, ]
      if Enquiry(lis1).size:
          print("Not Empty")
      else:
          print("Empty")

      chevron_right

      
      

      Output:

      Not Empty

    For more reference visit PEP8 style guide.



    My Personal Notes arrow_drop_up

    Check out this Author's contributed articles.

    If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

    Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.