2011-02-23 28 views
35

Dizinin boş olmadığını nasıl kontrol edebilirim? Ben bunu yaptım:Dizi boş değilse nasıl kontrol edilir?

if not self.table[5] is None: 

Bu doğru yolu mu?

+7

Çevrede çok fazla yineleme yapmak istemiyorum.Yanıtı şu şekilde iptal edin: [Python: Bir listenin boş olup olmadığını kontrol etmenin en iyi yolu nedir?] (Http://stackoverflow.com/questions/53513/python-what-is-the-best-way-to-check -if-bir-liste-boş) – birryree

+0

@birryree: Yinelenen değil. bool ([]) = bool (dizi ([])) ', ancak' bool ([0])! = bool (dizi ([0])) '. – endolith

cevap

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

çok

35

söz konusu Numpy hiç söz yok gayet mı. dizisi dizisi list ile kastediliyorsa, bir listeyi bir boolean olarak ele alırsanız, öğelere sahipse True ve boşsa False değerini döndürür. Bir numpy array, kullanımı gibi a ile

l = [] 

if l: 
    print "list has items" 

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

Bu yöntem tehlikelidir, çünkü örneğin bool (numpy.array ([0])) False değerini değerlendirir. Remi'nin a.size kullanarak testi doğru. –

+0

Evet, bu yanlış ve çok fazla upvotes olmamalıdır – endolith

+3

Listelerle çalışırken bu cevap doğrudur. a.size, bir liste ise işe yaramaz. OP, veri türü hakkında daha spesifik olmalıydı. – chthonicdaemon

40

: (. Python, [1,2,3] gibi nesneleri denir listeleri, değil diziler)

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

+0

Sadece bir listenin boş olup olmadığını kontrol etmek için numpy kullanma ağır işlenmiş gibi görünüyor. – Pengo

+3

@Pengo: Bir listeyi numpy dizisine dönüştürmeyi önermedim. Bu cevap, 'a' zaten bir numpy dizisi olduğunu varsayar. Python'daki 'diziler' hakkında konuşmak hızlı bir şekilde numpy dizilerine başvurur, çünkü Python'un Array nesnesi yok, sadece Listeler var. – Remi

1

kolay bir yolu Boole kullanmaktır ifadeler:

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

Veya başka Boole ifadesini kullanabilirsiniz: listenin uzunluğu 0 (boş değil) daha büyük olup olmadığını öğrenmek için, if ifadesi kullanabilmesi için, dizinin uzunluğu için

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

len(self.table) kontrolleri:

Python 2:

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

Python 3:

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

Ayrıca listenin boş olmadığını görmek için

'u kullanmak da mümkündür.

1

Henüz yorum yapamam, ancak birden fazla eleman ile numpy dizi kullanıyorsanız bu başarısız olacağını belirtmek gerekir:

if l: 
     print "list has items" 

elif not l: 
    print "list is empty" 

hata olacaktır:

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))

Python'da birçok dil len() işlevine sahiptir, bu sizin sorunuz için çalışır. Çıktı 0 değilse, liste boş değil.

0

Python'un gerçek array (import array from array aracılığıyla kullanılabilir) hakkında konuşuyorsanız, o zaman en az şaşkınlık ilkesi geçerlidir ve bir listenin boş olup olmadığını kontrol etmenin aynı şekilde boş olup olmadığını kontrol edebilirsiniz.

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") 
İlgili konular