使用理解来计算出现次数

当我们想要计算迭代中的项目数量,满足某些条件时,我们可以使用理解来生成惯用语法:

# 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

基本概念可归纳为:

  1. 迭代 range(1000) 中的元素。
  2. 连接所有需要的 if 条件。
  3. 使用 1 作为表达式为每个符合条件的项目返回 1。
  4. 总结所有 1s 以确定满足条件的项目数量。

注意 :这里我们不是在列表中收集 1s(注意没有方括号),但是我们将这些直接传递给 sum 函数,它将它们相加。这称为生成器表达式,类似于理解。