检查列表或数组元素是否为空

Gab*_*iel 0 python arrays numpy list

我知道如何检查列表是否为空(检查列表是否为空的最佳方法)以及如何检查numpy数组是否为空(如何检查 numpy 数组是否为空?

我有一个元素,有时可以是列表,有时可以是数组。我需要检查这个元素是否为空,而不事先知道它是哪一个。我可以考虑做

if isinstance(a, list):
    if a:
        # do something
elif a.any():
    # do something
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种更Pythonic的方式来做到这一点?

MSe*_*ert 5

您可以使用该size属性。

a = np.asarray(a)  # converts it to an array if it's not an array.
if a.size == 0:
    # it's empty!
Run Code Online (Sandbox Code Playgroud)

这也适用于列表,因为np.asarray. 如果它不为空,您还没有指定要执行的操作,但考虑到您允许s ,操作很可能会将其转换为数组,因此-callnumpy.ndarray不会有太多开销np.asarray

如果您真的不想要以下开销np.asarray

if not getattr(a, 'size', len(a)):  # However this does not work on numpy scalars
    # it's empty
Run Code Online (Sandbox Code Playgroud)