Python – 检查列表是否为空
在本文中,我们将学习如何检查给定列表是否为空。有多种方法可以在Python中检查列表,但所有方法都不合适,或者用Python的术语“pythonic”来实现。
- 让我们看看如何以一种不那么 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
- 现在让我们看看一个更 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
数字方式
- 我们之前在普通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()
- 在下一个示例中,我们将看到即使列表不是空的,输出也会显示为空。如果列表中包含一个 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 方式发挥作用
- 如果我们有一个 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
- 此示例显示了具有单个 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 风格指南。
- 如果我们有一个 numpy 数组,那么在所有情况下正确的方法是使用 if .size 。此大小检查数组的大小并相应地返回 True 或 False。