Combining a for loop and an if statement in Python can be done in a clean and concise way using list comprehensions, which is often considered the most "Pythonic" approach. This makes your code more readable and efficient, especially when you're filtering or transforming data in a collection.
Example:
Let’s say you want to create a list of even numbers from another list:
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers) # Output: [2, 4, 6]
Why it's Pythonic:
- It combines iteration and condition in a single line.
- Improves readability and reduces boilerplate code.
- It’s more efficient than writing separate loops and conditions.
Other uses:
You can also apply expressions to the filtered items:
squared_evens = [num**2 for num in numbers if num % 2 == 0]
# Output: [4, 16, 36]
Or even use generator expressions if you’re working with large data and want lazy evaluation:
even_gen = (num for num in numbers if num % 2 == 0)
Summary:
- Use [x for x in iterable if condition] for compactness.
- Combine logic without sacrificing readability.
- Ideal for filtering, mapping, or both in one line.