2011-02-23 22 views
35

¿Cómo comprobar si la matriz no está vacía? Hice esto:¿Cómo comprobar si la matriz no está vacía?

if not self.table[5] is None: 

¿Es esta la manera correcta?

+7

No quiero demasiados duplicados flotando.Niega la respuesta en: [Python: ¿Cuál es la mejor manera de verificar si una lista está vacía?] (Http://stackoverflow.com/questions/53513/python-what-is-the-best-way-to-check -if-a-list-is-empty) – birryree

+0

@birryree: No es un duplicado. 'bool ([]) == bool (array ([]))', pero 'bool ([0])! = bool (array ([0]))'. – endolith

Respuesta

4
if self.table: 
    print 'It is not empty' 

está muy bien también

35

No hay mención de numpy en la pregunta. Si por array te refieres a list, entonces si tratas una lista como booleana arrojará True si tiene elementos y False si está vacía.

l = [] 

if l: 
    print "list has items" 

if not l: 
    print "list is empty" 
+3

Este método es peligroso porque, por ejemplo, bool (numpy.array ([0])) se evalúa como False. La prueba de Remi usando a.size es correcta. –

+0

Sí, esto es incorrecto y no debería haber tantas votaciones ascendentes – endolith

+3

Esta respuesta es correcta cuando se trabaja con listas. a.size no funcionará si a es una lista. El OP debería haber sido más específico sobre el tipo de datos. – chthonicdaemon

40

con a como numpy array, utilice: (. En Python, objetos como [1,2,3] se llaman listas, no matrices)

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

+0

El uso de numpy solo para comprobar si una lista está vacía parece ser de mano dura. – Pengo

+3

@Pengo: No sugerí convertir una lista a una matriz numpy. Esta respuesta supone que 'a' ya es una matriz numpy. Hablar de 'arreglos' en Python se refiere rápidamente a matrices numpy, porque nativamente Python no tiene objetos Array, solo listas. – Remi

1

Una forma sencilla es utilizar booleana expresiones:

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

O puede utilizar otra expresión booleana:

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

len(self.table) cheques por la longitud de la matriz, lo que puede utilizar sentencias if para averiguar si la longitud de la lista es mayor que 0 (no vacío):

Python 2:

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

Python 3:

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

También es posible utilizar

if self.table: 
    #Execute if self.table is not empty 
else: 
    #Execute if self.table is empty 

para ver si la lista no está vacía.

1

que no puedo comentar todavía, pero cabe mencionar que si se utiliza matriz numpy con más de un elemento de esta fallará:

if l: 
     print "list has items" 

elif not l: 
    print "list is empty" 

el error será:

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

print(len(a_list))

Como muchos idiomas tienen la función len(), en Python esto funcionaría para su pregunta. Si la salida no es 0, la lista no está vacía.

0

Si habla de la actual array de Python (disponible a través de import array from array), entonces se aplica el principio de menos asombro y puede verificar si está vacío de la misma manera que comprobaría si una lista está vacía.

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") 
Cuestiones relacionadas