Truthy and falsy values in Python - Time & Space Complexity
We want to see how checking if a value is true or false in Python takes time as the input changes.
How does the time to decide truthiness grow when the input gets bigger or more complex?
Analyze the time complexity of the following code snippet.
def is_truthy(value):
if value:
return True
else:
return False
# Example usage
print(is_truthy([1, 2, 3]))
print(is_truthy([]))
This code checks if a given value is considered true or false in Python.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Checking the value's truthiness, which may involve looking at elements if the value is a collection.
- How many times: Depends on the type; for example, an empty list is checked quickly, but a non-empty list does not require checking elements.
When the input is simple like numbers or empty containers, the check is very fast and almost constant time.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 (small list) | Checks if list is empty, usually 1 operation |
| 100 (larger list) | Still usually 1 operation to check if empty or not |
| 1000 (large list) | Still 1 operation for emptiness check; no need to check all elements |
Pattern observation: The time to check truthiness does not grow with the size of the input for most built-in types.
Time Complexity: O(1)
This means checking if a value is true or false happens in constant time, no matter how big the input is.
[X] Wrong: "Checking if a list is true means looking at every item inside it."
[OK] Correct: Python only checks if the list is empty or not, which is a quick check, not a full scan.
Understanding how Python quickly decides if something is true or false helps you write efficient code and answer questions about performance clearly.
"What if we changed the input to a custom object with a complex __bool__ method? How would the time complexity change?"