如何检查数组是否为空?

amc*_*hew 62 python

如何检查数组是否为空?我这样做了:

if not self.table[5] is None:
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

Joh*_*ica 70

问题中没有提到numpy.如果你通过数组表示列表,那么如果你将列表视为布尔值,如果它有项目则会产生True,如果它是空的则会产生False.

l = []

if l:
    print "list has items"

if not l:
    print "list is empty"
Run Code Online (Sandbox Code Playgroud)

  • @DrewFrank,这是问题的正确答案.你正在__inventing__问题,然后声称答案是错误的 (5认同)
  • 使用列表时,此答案是正确的.如果a是列表,则a.size将不起作用.OP应该更加具体地说明数据类型. (4认同)
  • 此方法很危险,因为例如bool(numpy.array([0]))的计算结果为False.Remi使用a.size的测试是正确的. (3认同)
  • @ gt6989b显然你的意思是不清楚吗?如果没有澄清,可以假设OP在询问列表但是使用了错误的词.我的答案非常明确地阐明了这一推定.我猜测OP更可能询问列表而不是numpy数组. (2认同)

Rem*_*emi 54

a作为numpy的阵列,可以使用:

if a.size:
   print('array is not empty')
Run Code Online (Sandbox Code Playgroud)

(在Python中,像[1,2,3]被称为列表的对象,而不是数组.)

  • @Pengo:我没有建议将列表转换为numpy数组.这个答案假定'a'已经是一个numpy数组.在Python中谈论'数组'很快就会引用numpy数组,因为本机Python本身没有Array对象,只有Lists. (6认同)

Sen*_*ran 7

if self.table:
    print 'It is not empty'
Run Code Online (Sandbox Code Playgroud)

很好


bch*_*o04 6

len(self.table) 检查数组的长度,因此可以使用if语句来查找列表的长度是否大于0(不为空):

Python 2:

if len(self.table) > 0:
    #Do code here
Run Code Online (Sandbox Code Playgroud)

Python 3:

if(len(self.table) > 0):
    #Do code here
Run Code Online (Sandbox Code Playgroud)

也可以使用

if self.table:
    #Execute if self.table is not empty
else:
    #Execute if self.table is empty
Run Code Online (Sandbox Code Playgroud)

查看列表是否为空。


小智 5

print(len(a_list))
Run Code Online (Sandbox Code Playgroud)

由于许多语言都具有该len()功能,因此在 Python 中这可以解决您的问题。

如果输出不是0,则列表不为空。