python:检查空列表是否抛出ValueError

时间:2017-03-09 11:14:36

标签: python

我有代码检查列表是否为空

end_reg = np.argmin(vals_reg)
print(end_reg)
print("vals_reg[:end_reg]")
print(vals_reg[:end_reg])
if not vals_reg[:end_reg]:
    start_reg = np.argmax(vals_reg)
    end_reg = np.argmin(vals_reg[start_reg:]) + start_reg
else:
    start_reg = np.argmax(vals_reg[:end_reg])

我得到了这样的打印,所以似乎数组和一切都没问题。检查空虚失败

5
vals_reg[:end_reg]
[ 24844.  34973.  33538.  31136.  28258.]

我得到以下错误:

    if not vals_reg[:end_reg]:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

1 个答案:

答案 0 :(得分:0)

错误似乎很明显。 Numpy拒绝判断数组vals_reg[:end_reg]或任何数组是否应该被解释为TrueFalse,因为Numpy的创造者认为它是模糊的(这是真的) ;所有False的数组可能更自然地被归类为False,而不是True,因为它是非空的。)

当且仅当列表为空时,Python已决定将列表分类为False,因为Python的创建者认为非常明显且有用,但这不是Python列表,而是Numpy数组。

你用非模棱两可的术语实际问的是数组是否为空。您可以使用数组方法/属性执行此操作:

How can I check whether the numpy array is empty or not?

vals_reg[:end_reg].size == 0

是你想要的测试。