Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 582новые вакансии за сутки·92 562вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 220
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 402 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 105
  • Облачные технологии14 068
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 796
  • Продакт-менеджер1 248

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

DevOps и инфраструктура

  • Kubernetes7 761
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 259
  • CI/CD3 240
  • Мониторинг и Observability1 782
  • SRE565
  • Кибербезопасность450

Аналитика и данные

  • Data Scientist1 127
  • Бизнес-аналитик925
  • Аналитик данных845
  • Системный аналитик154

Другие направления

  • Проджект-менеджер611
  • UI/UX дизайн145
  • Ручное тестирование14

По регионам

  • Вакансии в США43 686
  • Вакансии в Европе23 668
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 889
  • Релокация в США43 686
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме PythonВсе вопросы
PythonJuniorТеория

Чем generator expression отличается от list comprehension?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

List comprehension [x for x in src] сразу строит list в памяти. Generator expression (x for x in src) — ленивый iterator, выдаёт по элементу через next(). Generator экономит память и удобен для one-pass обработки; list нужен, если требуются индексация, len(), повторные проходы или сортировка.

Синтаксис и тип результата

data = range(1_000_000)

lst = [x * x for x in data]          # list, ~8 MB, построен сразу
gen = (x * x for x in data)          # generator, ~200 байт, лениво

print(type(lst))    # <class 'list'>
print(type(gen))    # <class 'generator'>

Аналогично есть {...} (set comprehension) и {k: v ...} (dict comprehension), они тоже жадные.

Когда брать generator expression

  • One-pass агрегация: sum(x*x for x in data), max(...), any(...), min(...). Промежуточный список не нужен.
  • Stream-обработка больших файлов: (line.strip() for line in open(path)).
  • Pipeline-цепочки: фильтр + map без материализации каждого шага.
  • Аргумент функции — Python разрешает опустить внешние скобки: sum(x*x for x in data), не sum((x*x for x in data)).

Когда брать list comprehension

  • Нужна индексация, len(), срезы, повторные проходы.
  • Результат маленький, и удобство важнее памяти.
  • Передаёте в API, которое ожидает sequence (например, random.sample).
  • Многократная итерация в шаблонах (Jinja, Django) — generator при втором проходе пустой.

Подводный случай — одноразовость

gen = (x * x for x in range(5))
print(sum(gen))    # 30
print(sum(gen))    # 0   — генератор уже потреблён
print(list(gen))   # []

List такого поведения не показывает.

Производительность

  • Память: generator — постоянная (frame), list — пропорциональная числу элементов.
  • Время: для полного прохода list comprehension чуть быстрее (нет накладных расходов на каждый next()). Generator выигрывает, когда работа прерывается раньше: any(condition for x in big) выйдет на первом True.
  • Создание list тяжёлое для очень больших источников — может вызвать MemoryError.

Замыкание переменной цикла

funcs = [lambda: i for i in range(3)]
print([f() for f in funcs])   # [2, 2, 2] — все ссылаются на одно i

# Чтобы захватить значение:
funcs = [lambda i=i: i for i in range(3)]
print([f() for f in funcs])   # [0, 1, 2]

Это касается обоих типов comprehension.

Подводные камни

  • Использовать generator там, где нужен повторный проход — второй раз он пустой.
  • Индексация gen[2] — TypeError: 'generator' object is not subscriptable.
  • Передать generator в API, который под капотом вызывает len() — например, random.sample.
  • Запустить тяжёлое вычисление и сохранить generator «на потом» — оно отработает при первом потребителе, а не там, где выражение записано.
  • Generator expression внутри функции с локальной переменной — переменная захватывается по имени, как в обычных closures.
  • Print generator в логах — <generator object <genexpr> at 0x...> вместо данных; нужен list() или repr() с осторожностью.

Частые вопросы на собеседовании

  • Что такое truthy и falsy значения в Python?
  • Когда использовать threading?
  • Что такое type hints и зачем они нужны?
  • Как работает yield?

Типичные ошибки

  • Не знать про одноразовость generator.
  • Говорить, что generator всегда быстрее.
  • Путать скобки вокруг аргумента функции с tuple.

Что проверяет интервьюер

  • Выбирает по памяти и повторному использованию.
  • Понимает lazy evaluation.
  • Может объяснить consumed generator.

Как вы знаете этот вопрос?

Проверить себя по теме Python →

Источники

  • https://docs.python.org/3/reference/expressions.html
  • https://docs.python.org/3/tutorial/datastructures.html

Связанные темы

PythonIterationperformance

Вакансии с этим навыком

Python вакансии
  • AI Automation Architect
  • Managing Consultant, Databricks Data Engineering Lead
  • Data Scientist - Mechanicsburg, PA
  • Engineering Manager, Data Foundations
  • Software Developer – Analytics Data Platform (Data Reliability)