Skip to content

How to Use any() and all() Functions in Python

Learn how Python's any() and all() functions replace manual loops with efficient, readable checks for 'OR' and 'AND' conditions across lists, dictionaries, and generators.

Stop writing manual loops to check conditions across collections. Python's built-in any() and all() functions allow you to verify boolean logic across entire iterables in a single, readable line.

These functions are essential tools for writing clean, Pythonic code.

Understanding any(): The "OR" Chain

The any() function returns True if at least one element in the iterable is truthy. It is logically equivalent to chaining or operators: A or B or C ...

flags = [False, False, True, False]

if any(flags):
    print("At least one flag is active!")

Output:

At least one flag is active!

Practical Example: Input Validation

Check if a list of numbers contains any negative values:

numbers = [10, 5, -1, 8]

if any(n < 0 for n in numbers):
    print("Error: Found invalid negative number!")

Practical Example: User Permissions

Check if a user has at least one required permission:

user_roles = ['viewer', 'editor']
admin_roles = ['admin', 'superuser']

has_admin_access = any(role in admin_roles for role in user_roles)
print(f"Admin access: {has_admin_access}")  # False

Understanding all(): The "AND" Chain

The all() function returns True only if every single element in the iterable is truthy. It is logically equivalent to chaining and operators: A and B and C ...

system_checks = [True, True, True]

if all(system_checks):
    print("All systems operational.")

Output:

All systems operational.

Practical Example: Data Validation

Check if all required fields are filled in a form:

form_data = {
    'username': 'alice',
    'email': 'alice@example.com',
    'password': 'secret123'
}

required_fields = ['username', 'email', 'password']

if all(form_data.get(field) for field in required_fields):
    print("Form is complete.")
else:
    print("Missing required fields.")

Practical Example: Format Verification

Check if all words in a list are properly capitalized:

words = ["Hello", "World", "Python"]

if all(word.istitle() for word in words):
    print("Title casing is correct.")

Output

Title casing is correct.

Short-Circuit Evaluation

Both any() and all() use short-circuit evaluation, meaning they stop iterating as soon as the result is determined.

  • any() stops at the first True value.
  • all() stops at the first False value.

This makes them highly efficient for large datasets:

result = any(x > 0 for x in [1, 2, 3, 4, 5])

result = all(x > 0 for x in [1, 0, 3, 4, 5])

The Empty Iterable Behavior

What happens when you pass an empty list? This behavior often surprises developers.

print(any([]))  # False
print(all([]))  # True
Function Empty List Result Reasoning
any([]) False There is no element that is True.
all([]) True There is no element that is False. (Vacuous Truth)

Combining with Generator Expressions

Both functions work seamlessly with generator expressions, which are memory-efficient because they don't create intermediate lists.

file_sizes = [50, 75, 120, 30]
has_large_file = any(size > 100 for size in file_sizes)

passwords = ["abc", "Str0ng!Pass", "12345"]
all_strong = all(len(p) >= 8 for p in passwords)

print(f"Has large file: {has_large_file}")    # True
print(f"All passwords strong: {all_strong}")  # False

Output:

Has large file: True
All passwords strong: False

Quick Reference

Function Returns True if... Short-Circuits When...
any(iterable) At least one element is truthy First True is found
all(iterable) Every element is truthy First False is found

Summary

  • Use any() to check if at least one item meets a condition.
  • Use all() to verify that every item meets a condition.
  • Both functions use short-circuit evaluation for efficiency.
  • Be mindful of empty iterables: any([]) is False, but all([]) is True.
  • Combine with generator expressions for memory-efficient checks on large datasets.
Navigation