Как подсчитать количество вхождений «Нет» в списке?

Я пытаюсь считать вещи, которые не являются None , но я хочу, чтобы и False и числовые нули были приняты. Реверсивная логика: я хочу считать все, кроме того, что явно объявлено как « None .

пример

Только 5-й элемент не включен в число:

 >>> list = ['hey', 'what', 0, False, None, 14] >>> print(magic_count(list)) 5 

Я знаю, что это не нормальное поведение Python, но как я могу переопределить поведение Python?

Что я пробовал

До сих пор я основал людей, предлагающих, что a if a is not None else "too bad" , но он не работает.

Я также попробовал isinstance , но не повезло.

4 Solutions collect form web for “Как подсчитать количество вхождений «Нет» в списке?”

Просто используйте проверку sum если каждый объект is not None который будет True или False поэтому 1 или 0.

 lst = ['hey','what',0,False,None,14] print(sum(x is not None for x in lst)) 

Или используя filter с python2:

 print(len(filter(lambda x: x is not None, lst))) # py3 -> tuple(filter(lambda x: x is not None, lst)) 

С python3 есть None.__ne__() который будет игнорировать None и filter без необходимости лямбда.

 sum(1 for _ in filter(None.__ne__, lst)) 

Преимущество sum заключается в том, что она лениво оценивает элемент за раз, а не создает полный список значений.

На стороне примечания избегайте использования list в качестве имени переменной, так как он затеняет list python.

Два пути:

Один, с выражением в списке

 len([x for x in lst if x is not None]) 

Два, подсчитайте Nones и вычтите их из длины:

 len(lst) - lst.count(None) 
 lst = ['hey','what',0,False,None,14] print sum(1 for i in lst if i != None) 

Недавно я выпустил библиотеку, содержащую функцию iteration_utilities.count_items (нормально, фактически 3, потому что я также использую помощники is_None и is_not_None ) для этой цели:

 >>> from iteration_utilities import count_items, is_not_None, is_None >>> lst = ['hey', 'what', 0, False, None, 14] >>> count_items(lst, pred=is_not_None) # number of items that are not None 5 >>> count_items(lst, pred=is_None) # number of items that are None 1 
  • Как печатать переменную с помощью запросов и JSON
  • TypeError: NoneType - при использовании return zip_longest
  • Какое правильное исключение Try для NoneType при использовании функции .groups () регулярного выражения regex
  • Что такое питонический способ доступа к вложенным dicts без ошибок NoneType
  • Где находится NoneType, расположенный в Python 3.x?
  • Назначение NoneType для Dict
  • Python Script возвращает непреднамеренное «None» после выполнения функции
  • Внедрение NoneType, Причины и детали
  • Python - лучший язык программирования в мире.