Skip to main content

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

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:

# Stops immediately when it finds 1
result = any(x > 0 for x in [1, 2, 3, 4, 5])

# Stops immediately when it finds 0
result = all(x > 0 for x in [1, 0, 3, 4, 5])
Performance Benefit

When checking conditions on millions of items, short-circuiting can save significant processing time by avoiding unnecessary iterations.

The Empty Iterable Behavior

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

print(any([]))  # False
print(all([])) # True
FunctionEmpty List ResultReasoning
any([])FalseThere is no element that is True.
all([])TrueThere is no element that is False. (Vacuous Truth)
Watch Out for all([])

The all([]) returning True can cause subtle bugs. If you need to ensure a list is non-empty and all elements pass a check, add an explicit length check:

items = []

if items and all(item.is_valid() for item in items):
print("All items are valid.")
else:
print("No valid items or list is empty.")

Output:

No valid items or list is empty.

Combining with Generator Expressions

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

# Check if any file is too large (over 100MB)
file_sizes = [50, 75, 120, 30]
has_large_file = any(size > 100 for size in file_sizes)

# Check if all passwords are strong enough
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

FunctionReturns True if...Short-Circuits When...
any(iterable)At least one element is truthyFirst True is found
all(iterable)Every element is truthyFirst 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.