A list comprehension builds a new list in one expression, from an iterable, with an optional filter. It is more concise than a loop with append and stays readable as long as it is simple. The same principle exists for dictionaries and sets.
Example
carres = [n * n for n in range(10) if n % 2 == 0]