list_comp имеет тип list, set_comp — set, gen_expr — generator. Круглые скобки с for создают генераторное выражение, а не tuple comprehension.
Идентификация типов переменных, полученных разными comprehension
list_comp имеет тип list, set_comp — set, gen_expr — generator. Круглые скобки с for создают генераторное выражение, а не tuple comprehension.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В данном примере создаются три переменные с использованием различных форм записи comprehension. Определите, к какому типу данных относится каждая из них.
list_comp = [i for i in range(10)]
set_comp = {i for i in range(10)}
gen_expr = (i for i in range(10))
Ответ
list_comp имеет тип list, set_comp — set, gen_expr — generator. Круглые скобки с for создают генераторное выражение, а не tuple comprehension.
Список и множество сразу вычисляют элементы, а генератор выдаёт их по запросу:
print(type(list_comp)) # <class 'list'>
print(type(set_comp)) # <class 'set'>
print(type(gen_expr)) # <class 'generator'>
Список сохраняет порядок и допускает повторы. Множество хранит уникальные хешируемые элементы без гарантированного порядка обхода. Генератор одноразовый и не поддерживает обычные len или индексирование; повторный обход уже исчерпанного генератора ничего не выдаст.