📜  Python – 检查列表是否为空

📅  最后修改于: 2022-05-13 01:55:11.583000             🧑  作者: Mango

Python – 检查列表是否为空

在本文中,我们将学习如何检查给定列表是否为空。有多种方法可以在Python中检查列表,但所有方法都不合适,或者用Python的术语“pythonic”来实现。

  1. 让我们看看如何以一种不那么 Python 的方式检查列表是否为空。我们应该避免这种显式检查序列或列表的方式
    # 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")
    

    输出:

    Empty List
    
  2. 现在让我们看看一个更 Pythonic 的方法来检查一个空列表。这种检查方法是一种隐式检查方法,比前一种方法更可取。
    # 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")
    

    输出:

    The list is Empty

数字方式

  1. 我们之前在普通Python中使用的方法不适用于 Numpythonic 方式。其他适用于列表或其他标准容器的方法对于 numpy arrays 失败。这种方法在 numpy 数组中失败,因为 numpy 尝试将数组转换为 bool 数组,如果它试图一次评估所有这些 bool 以获得某种聚合真值,它会失败,所以我们得到一个 ValueError。
    # 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")
    

    输出:

    None

    错误:

    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. 在下一个示例中,我们将看到即使列表不是空的,输出也会显示为空。如果列表中包含一个 0,则 if 语句将产生错误的结果。
    # 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")
    

    输出:

    Empty

    使 Numpythonic 方式发挥作用

    1. 如果我们有一个 numpy 数组,那么在所有情况下正确的方法是使用 if .size 。此大小检查数组的大小并相应地返回 True 或 False。
      例子:
      # 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")
      

      输出:

      Empty
    2. 此示例显示了具有单个 0 元素的另一种情况,在前面的情况中失败了。
      # 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")
      

      输出:

      Not Empty

    如需更多参考,请访问 PEP8 风格指南。