如何计算可迭代中的非null元素?

Ale*_*dru 14 python iterator list-comprehension idiomatic

我正在为以下代码片段寻找更好/更多的Pythonic解决方案

count = sum(1 for e in iterable if e)
Run Code Online (Sandbox Code Playgroud)

tee*_*ark 21

len(filter(None, iterable))
Run Code Online (Sandbox Code Playgroud)

使用None作为谓词,filter只是说使用项目的真实性.(也许更清楚len(filter(bool, iterable)))

  • 使用O(N)额外的内存. (11认同)
  • 使用 `len(filter(None, iterable))` 会给我一个错误 `TypeError: object of type 'filter' has no len()`。我在这里错过了什么吗? (4认同)
  • 这只是len(list(iterable))的一种复杂方式. (2认同)