Hra*_*bal 18 python boolean list-comprehension nonetype
我试图计算那些不是的东西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,但没有运气.
Pad*_*ham 35
只是使用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))
或者使用filterpython2:
print(len(filter(lambda x: x is not None, lst))) # py3 -> tuple(filter(lambda x: x is not None, lst))
使用python3   None.__ne__()只会忽略None和过滤而不需要lambda.
sum(1 for _ in filter(None.__ne__, lst))
优点sum是它一次懒惰地评估一个元素,而不是创建一个完整的值列表.
另外,请注意避免使用list变量名称,因为它会影响python list.
Rem*_*ich 10
两种方式:
一,带有列表表达式
len([x for x in lst if x is not None])
二,计算Nones并从长度中减去它们:
len(lst) - lst.count(None)