关于python:如何检查数组是否不为空?

How to check if array is not empty?

本问题已经有最佳答案,请猛点这里访问。

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

1
if not self.table[5] is None:

这条路对吗?


这个问题没有提到麻木。如果"按数组"的意思是"列表",那么如果将列表视为布尔值,那么如果列表中包含项,它将生成"真";如果列表为空,它将生成"假"。

1
2
3
4
5
6
7
l = []

if l:
    print"list has items"

if not l:
    print"list is empty"


使用a作为numpy数组,使用:

1
2
if a.size:
   print('array is not empty')

(在python中,像[1,2,3]这样的对象称为列表,而不是数组。)


1
2
if self.table:
    print 'It is not empty'

也很好


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

Python 2:

1
2
if len(self.table) > 0:
    #Do code here

Python 3:

1
2
if(len(self.table) > 0):
    #Do code here

也可以使用

1
2
3
4
if self.table:
    #Execute if self.table is not empty
else:
    #Execute if self.table is empty

查看列表是否不为空。


print(len(a_list))

由于许多语言都有len()函数,在python中,这可以解决您的问题。如果输出不是0,则列表不为空。


我还不能评论,但应该注意的是,如果使用多个元素的numpy数组,这将失败:

1
2
3
4
5
if l:
       print"list has items"

elif not l:
    print"list is empty"

错误将是:

1
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()


一种简单的方法是使用布尔表达式:

1
2
3
4
if not self.table[5]:
    print('list is empty')
else:
    print('list is not empty')

或者可以使用另一个布尔表达式:

1
2
3
4
if self.table[5]==[]:
    print('list is empty')
else:
    print('list is not empty')

如果您谈论的是python的实际array(通过import array from array提供),那么最不吃惊的原则适用,您可以像检查列表是否为空一样检查它是否为空。

1
2
3
4
5
6
7
8
9
10
from array import array
an_array = array('i') # an array of ints

if an_array:
    print("this won't be printed")

an_array.append(3)

if an_array:
    print("this will be printed")