使用理解來計算出現次數

當我們想要計算迭代中的專案數量,滿足某些條件時,我們可以使用理解來生成慣用語法:

# 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 函式,它將它們相加。這稱為生成器表示式,類似於理解。