Mediumitertools

Что такое itertools?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

itertools — модуль с iterator-функциями для efficient looping. Все возвращают lazy iterators, не создают промежуточные списки.

import itertools

# Декартово произведение
list(itertools.product('AB', '12'))
# [('A','1'), ('A','2'), ('B','1'), ('B','2')]

# Concat
list(itertools.chain([1, 2], [3, 4]))   # [1, 2, 3, 4]

# Группировка (после сортировки по key!)
for key, group in itertools.groupby(sorted(items, key=keyfunc), keyfunc):
    process(key, list(group))

# Combinatorics
list(itertools.combinations('ABC', 2))  # [('A','B'), ('A','C'), ('B','C')]

Основные:

  • Infinite: count, cycle, repeat;
  • Finite: accumulate, chain, groupby, islice, takewhile, dropwhile, starmap, tee;
  • Combinatorial: product, permutations, combinations, combinations_with_replacement.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.