【发布时间】:2021-05-10 18:04:55
【问题描述】:
假设我有一个变量x,它可以是标量或一维对象,如列表、numpy ndarray 或 pandas 系列等。我想检查它是否是标量并且在数值上等于 0(a仅包含零的类似列表的对象应该产生错误,因为不是标量)。这样做的最简洁和pythonic的方式是什么?
一个简单的:
if x == 0:
print("scalar == 0 detected")
不起作用,因为 numpy 数组按元素进行比较(并抛出 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()。
【问题讨论】:
-
使用
isinstance并对x的每种可能类型进行适当的检查 -
首先如何将
x设置为两种截然不同的类型之一? -
@chepner 该案例出现在一个包含许多不同类型的列表的循环中。
-
@DeepSpace 我想知道是否有标准的“涵盖所有情况”的解决方案,但使用了 np.isscalar 检查。
标签: python