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 подскажет развёрнутый ответ в реальном времени.