【发布时间】:2011-03-24 12:48:26
【问题描述】:
我正在为以下 sn-p 寻找更好/更 Pythonic 的解决方案
count = sum(1 for e in iterable if e)
【问题讨论】:
-
你的方式有什么问题或'unpythonic'?
-
生成器表达式是 Pythonic。你的意思是更短吗?
-
OP,在 Python 中准确了解什么是非空,什么不是非空。例如,
sum(1 for e in [False, 0, '', [], (), [''], (''), [False], (False,), None] if e)实际上计算为 3 而不是 0,因为奇怪的是嵌套序列[['']]、[[False]]、[(False,)]算作非空值,但[('')]没有,[!无论如何,总的来说,如果我们保证列表是平坦的,那么您提供的代码很好并且足以完成任务。
标签: python iterator list-comprehension idioms