Python –如何检查列表是否为空?

电脑杂谈  发布时间:2020-05-28 07:26:04  来源:网络整理

python 判断列表为空_python 判断系统平台_python 判断dict 是否相等

例如,如果您通过以下操作:

a = []

如何检查a是否为空?

答案
if not a:
  print("List is empty")

使用空列表的隐式布尔值非常具有Python性.

python 判断系统平台_python 判断dict 是否相等_python 判断列表为空

Pythonic方式来自PEP 8样式指南(其中Yes表示“推荐”,No表示“不推荐”):

对于序列(字符串,列表,元组),请使用空序列为假的事实.

Yes: if not seq:
     if seq:
No:  if len(seq):
     if not len(seq):

其他人似乎将这个问题推广到列表之外,所以我想向许可能使用的不同类型的序列添加警告,特别是因为这是Google命中的“ python测试空数组”的第一个序列,.

您需要注意numpy数组,因为对于列表或其他标准容器而言,其他适用于列表或其他标准容器的方法对于numpy数组均会失败. 我在下面解释原因,但总之,要使用大小.

python 判断系统平台_python 判断dict 是否相等_python 判断列表为空

由于numpy尝试将数组转换为bool数组,并且如果x试图一次评估所有这些s以获得某种汇总的真值,则“ pythonic”方法将失败. 但这没有任何意义,所以您会遇到ValueError:

>>> x = numpy.array([0,1])
>>> if x: print("x")
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

但是至少以上内容告诉您它失败了. 如果您碰巧只有一个只有一个元素的numpy数组,则此if语句将“起作用”python 判断列表为空python 判断列表为空,因为您没有收到错误. 但是,如果此元素恰好为0(或0.0,或者为false,...),则if语句将错误地导致false:

>>> x = numpy.array([0,])
>>> if x: print("x")
... else: print("No x")
No x

但是显然x不为空!这个结果不是您想要的.

python 判断列表为空_python 判断系统平台_python 判断dict 是否相等

例如,

len( numpy.zeros((1,0)) )

即使数组包含零个元素,也返回1.

如前所述,在所有已知都有numpy数组的情况下,正确的方法是使用x.size:

>>> x = numpy.array([0,1])
>>> if x.size: print("x")
x
>>> x = numpy.array([0,])
>>> if x.size: print("x")
... else: print("No x")
x
>>> x = numpy.zeros((1,0))
>>> if x.size: print("x")
... else: print("No x")
No x

python 判断dict 是否相等_python 判断列表为空_python 判断系统平台

如果不确定是listnumpy数组还是其他数组,可以将此方法与@dubiousjim给出的答案结合使用,以确保每种类型都使用正确的测试. 并不是很“ pythonic”,但是事实证明,至少在这种意义上,numpy故意破坏了pythonicity.

如果您需要做的不仅仅是检查输入是否为空,并且您正在使用其他numpy功能(例如索引或数学运算),则将输入强制为numpy可能会更有效(当然更常见). 数组. 有几个不错的功能可以快速完成此操作-最重要的是numpy.asarray. 这将接受您的输入,如果已经是数组,则不执行任何操作,或者如果它是列表,元组等,则将您的输入封装到一个数组中,并有选择地将其转换为您选择的数组dtype. 因此,只要有可能,它就会很快,并确保您只需要假设输入是一个numpy数组. 我们通常甚至只使用相同的名称,因为到数组的转换不会超出当前范围:

x = numpy.asarray(x, dtype=numpy.double)

这将使x.size检查在我在此页面上看到的所有情况下都能正常工作.

标签: python,列表


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-224985-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 党琪
        党琪

        男朋友停下脚步问我“你喜不喜欢易烊千玺

      热点图片
      拼命载入中...