Python 检查列表或数组元素是否为空
我知道如何检查列表是否为空()以及如何检查Python 检查列表或数组元素是否为空,python,arrays,list,numpy,Python,Arrays,List,Numpy,我知道如何检查列表是否为空()以及如何检查numpy数组是否为空() 我有一个元素,有时是列表,有时是数组。我需要检查这个元素是否为空,而事先不知道它是哪一个。我能想到做什么 if isinstance(a, list): if a: # do something elif a.any(): # do something 但是我想知道是否有一种更像python的方法来实现这一点?您可以使用该属性 a = np.asarray(a) # converts it
numpy
数组是否为空()
我有一个元素,有时是列表,有时是数组。我需要检查这个元素是否为空,而事先不知道它是哪一个。我能想到做什么
if isinstance(a, list):
if a:
# do something
elif a.any():
# do something
但是我想知道是否有一种更像python的方法来实现这一点?您可以使用该属性
a = np.asarray(a) # converts it to an array if it's not an array.
if a.size == 0:
# it's empty!
这也适用于列表,因为np.asarray
。如果它不是空的,您没有指定要执行的操作,但是如果您允许numpy.ndarray
s,那么操作很可能会将其转换为数组,因此np.asarray
-调用不会有太多开销
如果您真的不想要np.asarray
的开销:
if not getattr(a, 'size', len(a)): # However this does not work on numpy scalars
# it's empty
您可以使用该属性
a = np.asarray(a) # converts it to an array if it's not an array.
if a.size == 0:
# it's empty!
这也适用于列表,因为np.asarray
。如果它不是空的,您没有指定要执行的操作,但是如果您允许numpy.ndarray
s,那么操作很可能会将其转换为数组,因此np.asarray
-调用不会有太多开销
如果您真的不想要np.asarray
的开销:
if not getattr(a, 'size', len(a)): # However this does not work on numpy scalars
# it's empty
我喜欢第二种解决方案:)我怀疑OP与“标量”数组无关。我很少处理这些问题;如果我这样做了,我就不会问它是不是空的。所以
len(a)
的答案可能非常有用。我不怀疑,但是np.asarray
(或者np.asanyarray
,当子类应该通过时)在我看来是“最具python风格的方法”。至少如果在a
上使用numpy函数,它们会将其强制转换为数组。我喜欢第二种解决方案:)我怀疑OP与“标量”数组无关。我很少处理这些问题;如果我这样做了,我就不会问它是不是空的。所以len(a)
的答案可能非常有用。我不怀疑,但是np.asarray
(或者np.asanyarray
,当子类应该通过时)在我看来是“最具python风格的方法”。至少如果在a
上使用numpy函数,它们会将其强制转换为数组。列表和数组的代码是否相同?是的,如果元素不为空,则执行相同的代码。列表和数组的代码是否相同?是的,如果元素不为空,则执行相同的代码。