Как работают генераторы списка или list comprehension?

В Python есть специальная конструкцияпозволяющая быстрее и удобнее создавать заполненные коллекции на основе имеющихсяпри этом применяя какоелибо выражение к каждому элементу.

1Генератор списка (list comprehension)

word = 'hello'
new_list = [c.upper() for c in word]
# ['H', 'E', 'L', 'L', 'O']

2. Генератор множества (set comprehension)

elements = [1, 2, 1, 3, 2]
new_set = {n * 0.1 for n in elements}
# {0.1, 0.2, 0.3}

3. Генератор словаря (dictionary comprehension)

numbers = {'one': 1, 'two': 2, 'three': 3}
new_dict = {v: k for k, v in numbers.items()}
# {1: 'one', 2: 'two', 3: 'three'}