None Value Hakkında

Merhaba arkadaşlar, [None,None,None] elimde diyelim ki böyle bir liste var len([None,None,None]) yaptığım zaman uzunluğu 3 olarak veriyor nasıl bir süzgeçten geçirebilirim? None değerini görmezden gelerek bana verimli bir değer döndürmesini istiyorum.

x=[None,None,None]
len([turn for turn in x if turn!=None]) sorunumu çözdüm ve anladım ki bir soruyu sormadan önce iyice göz gezdirmek lazımmış.

my_list = [None, 1, 2, 3, None] 
res = len(list(filter(lambda item: item is not None, my_list))) 

büyük listeler için daha hızlı olacağını düşünüyorum

1 Beğeni

Evet, haklı olduğunuz için büyük bir listede üreteç kullandım :slight_smile:

Fakat yaptığım işlem başarılı olsa bile None değeri döndürüyor kaç işlem yaptığı bilgisine ulaşamıyorum.

Direkt None değer döndürmesi olayından kurtulmam lazım.

res değişkenindeki len() methodunu silerseniz direkt None değer barındırmayan liste döndürecektir. tam olarak sorunu anlayamadım kusura bakmayın.

Hallettim hocam ya kod uzun ve iç içe üreteçle yazdığım için göz yorar diye düşündüm ondan atmamıştım küçük bir hata yapmışım :slight_smile:

Listelerin count diye bir metodu var. Bu metodu kullanarak listenin içindeki None değerlerinin sayısını öğrenebilirsiniz. Sonra da toplam eleman sayısından çıkartabilirsiniz:

len(x) - x.count(None)
1 Beğeni

Ahaha bu çok daha pratik bir yol teşekkür ederim :slight_smile: