[5 min python] 內建函數 - all()

更新 發佈閱讀 7 分鐘

Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。

all():全部為真才回傳 True

語法:

all(iterable)

all() 會檢查可迭代物件中是否「全部」元素都為真(truthy)。全部為真才回傳 True;只要有一個為假就回傳 False。

print(all([True, True, True]))    # True(全部 True)
print(all([True, False, True]))   # False(有一個 False)
print(all([1, 2, 3]))             # True(全是真值)
print(all([1, 0, 3]))             # False(0 是假值)
print(all([]))                    # True(空的,特殊!)

搭配生成式

all() 最常搭配生成式使用,用來檢查是否所有元素都符合某個條件。

nums = [2, 4, 6, 8, 10]

# 是否全部都是偶數?
all_even = all(n % 2 == 0 for n in nums)
print(all_even)  # True

# 是否全部都大於 0?
all_positive = all(n > 0 for n in nums)
print(all_positive)  # True

# 是否全部都大於 5?
all_big = all(n > 5 for n in nums)
print(all_big)  # False(2 和 4 不大於 5)

any() vs all()

any() 和 all() 是一對互補的函數。any() 是「有一個就好」,all() 是「全部都要」。

nums = [2, 4, 5, 6, 8]

print(any(n % 2 == 1 for n in nums))  # True(5 是奇數)
print(all(n % 2 == 0 for n in nums))  # False(5 不是偶數)

# 記憶口訣:
# any() → 至少一個為真 → True
# all() → 全部都為真 → True

# 空的情況:
print(any([]))  # False(沒有任何真值)
print(all([]))  # True(沒有任何假值)

all() 的短路特性

和 any() 一樣,all() 也有短路特性:一旦找到第一個假值,就立刻回傳 False,不會繼續檢查。

def check(n):
    print(f'  檢查 {n}')
    return n > 0

nums = [3, 5, -1, 7, 9]
result = all(check(n) for n in nums)
print(f'結果:{result}')
# 輸出:
#   檢查 3
#   檢查 5
#   檢查 -1   ← 找到假值,停止!
# 結果:False

實用場景

all() 很適合做資料驗證、權限檢查等需要「全部通過」的場景。

# 檢查所有欄位都有填寫
form = {'name': 'Alice', 'email': 'a@b.com', 'phone': '0912345678'}
is_complete = all(form.values())
print(f'表單完整:{is_complete}')  # True

# 檢查密碼是否符合所有規則
password = 'Abc12345'
rules = [
    len(password) >= 8,
    any(c.isupper() for c in password),
    any(c.islower() for c in password),
    any(c.isdigit() for c in password),
]
is_valid = all(rules)
print(f'密碼有效:{is_valid}')  # True

小小綜合例子

# 學生成績審核系統
students = {
    '小明': {'國文': 75, '數學': 82, '英文': 68},
    '小華': {'國文': 90, '數學': 88, '英文': 92},
    '小美': {'國文': 60, '數學': 55, '英文': 70},
}

PASS_SCORE = 60

print('=== 成績審核 ===')
for name, scores in students.items():
    # 是否全部及格?
    all_pass = all(s >= PASS_SCORE for s in scores.values())
    # 是否有任一科優秀(>=90)?
    has_excellent = any(s >= 90 for s in scores.values())
    # 平均分
    avg = sum(scores.values()) / len(scores)
    
    status = '✓ 全部及格' if all_pass else '✗ 有不及格'
    excellent = ' ★ 有優秀科目' if has_excellent else ''
    
    print(f'{name}:平均 {avg:.1f} → {status}{excellent}')
    
    if not all_pass:
        failed = [k for k, v in scores.items() if v < PASS_SCORE]
        print(f'  不及格科目:{failed}')

# === 成績審核 ===
# 小明:平均 75.0 → ✓ 全部及格
# 小華:平均 90.0 → ✓ 全部及格 ★ 有優秀科目
# 小美:平均 61.7 → ✗ 有不及格
#   不及格科目:['數學']
留言
avatar-img
艾利斯幻想旅程
5會員
467內容數
網路世界是一個充滿多元性與無限可能的空間,人們可以在此分享資訊、交流思想,並展現無盡的創造力。然而,隨著社交媒體和線上論壇的普及,一種有趣且獨特的現象也隨之興起——廢文。廢文指的是那些內容看似無聊、無害,或表面上毫無意義的帖子、留言或圖片,通常目的在於娛樂或逗趣,而非提供實質價值的資訊。
艾利斯幻想旅程的其他內容
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 any():任一為真就回傳 True 語法: any(iterable) any() 會檢查可迭代物件中是否「至少有一
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 any():任一為真就回傳 True 語法: any(iterable) any() 會檢查可迭代物件中是否「至少有一
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 map():對每個元素套用函數 語法: map(function, iterable, *iterables) map
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 map():對每個元素套用函數 語法: map(function, iterable, *iterables) map
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 filter():過濾可迭代物件 語法: filter(function, iterable) filter() 會用
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 filter():過濾可迭代物件 語法: filter(function, iterable) filter() 會用
看更多