Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
any() / all() / bool()
『any()』はイテラブルの要素のいずれかが真であればTrueを返し、『all()』はすべての要素が真であればTrueを返します。『bool()』は値をTrueまたはFalseに変換します。これらは条件判定をリスト全体に一括適用したいときに役立ちます。
構文
# いずれかがTrueならTrue any(iterable) # すべてがTrueならTrue all(iterable) # 値をbool型に変換 bool(value)
関数一覧
| 関数・演算子 | 概要 |
|---|---|
| any(iterable) | 要素のいずれかが真ならTrue。イテラブルが空の場合はFalse。 |
| all(iterable) | すべての要素が真ならTrue。イテラブルが空の場合はTrue。 |
| bool(value) | valueを真偽値に変換する。 |
| not 式 | 真偽値を反転する。 |
サンプルコード
# any: いずれかが条件を満たすか
nums = [2, 4, 6, 7, 10]
print(any(n % 2 != 0 for n in nums)) # True(7が奇数)
# any: リストに特定の値があるか
words = ['apple', 'banana', 'cherry']
print(any(w.startswith('b') for w in words)) # True
print(any(w.startswith('z') for w in words)) # False
# all: すべてが条件を満たすか
scores = [80, 90, 75, 88]
print(all(s >= 60 for s in scores)) # True(全員合格)
passwords = ['abc123', 'xyz', 'password!']
print(all(len(p) >= 8 for p in passwords)) # False('xyz'が短い)
# 空のイテラブル
print(any([])) # False(1つも真がない)
print(all([])) # True(反例がない = 真空的真)
# bool: 値の真偽変換
print(bool(0)) # False
print(bool(1)) # True
print(bool('')) # False
print(bool('hello')) # True
print(bool([])) # False
print(bool([0])) # True(0を含むリストは真)
print(bool(None)) # False
# not: 真偽値の反転
x = 5
print(not x > 10) # True
print(not x > 0) # False
# any/all と条件式の組み合わせ
def is_valid_user(user):
required = ['name', 'email', 'age']
return all(key in user for key in required)
user1 = {'name': '田中', 'email': 'tanaka@example.com', 'age': 30}
user2 = {'name': '鈴木', 'email': 'suzuki@example.com'}
print(is_valid_user(user1)) # True
print(is_valid_user(user2)) # False(ageがない)
概要
『any()』と『all()』は短絡評価(ショートサーキット)を行います。『any()』は最初にTrueの要素が見つかった時点で評価を終了し、『all()』は最初にFalseの要素が見つかった時点で評価を終了します。そのためジェネレータ式と組み合わせると、条件を満たした時点で後続の要素を評価しないため効率的です。
空のイテラブルに対する挙動として、any([])はFalse、all([])はTrueを返します。all([])がTrueになるのは「すべての要素が条件を満たす」の反例がないためで、数学の「空集合の上の全称量化」と同じ論理です。
Pythonでは0・空文字列・空リスト・None・0.0などが偽(falsy)として扱われます。bool()はこのPythonの真偽値変換規則(__bool__メソッド)に基づいて変換します。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。