A comprehension builds a new list in one line. These two do the same thing:
with_tax = []
for p in prices:
with_tax.append(p * 1.2)
with_tax = [p * 1.2 for p in prices]
Read it as "p * 1.2 for each p in prices". Add if at the end to keep only some items: [p for p in prices if p >= 100]. The expression at the front decides what goes into the new list; the if at the end decides which items get in.
A dictionary comprehension uses braces and a key: value pair: {name: len(name) for name in names}.
Comprehensions suit simple transform-and-filter steps. When the logic needs several lines or an elif, a plain loop is easier to read.