使用理解来计算出现次数
当我们想要计算迭代中的项目数量,满足某些条件时,我们可以使用理解来生成惯用语法:
# Count the numbers in `range(1000)` that are even and contain the digit `9`:
print (sum(
1 for x in range(1000)
if x % 2 == 0 and
'9' in str(x)
))
# Out: 95
基本概念可归纳为:
- 迭代
range(1000)
中的元素。 - 连接所有需要的
if
条件。 - 使用 1 作为表达式为每个符合条件的项目返回 1。
- 总结所有
1
s 以确定满足条件的项目数量。
注意 :这里我们不是在列表中收集 1
s(注意没有方括号),但是我们将这些直接传递给 sum
函数,它将它们相加。这称为生成器表达式,类似于理解。