Выбор ответа Middle Итераторы и генераторы обновлено
itertools.groupby на несортированных данных
Вопрос
Что вернёт [(k, len(list(g))) for k, g in groupby("aabaa")]?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: [('a', 2), ('b', 1), ('a', 2)]. groupby объединяет только соседние равные элементы, как uniq в Unix.
Варианты ответа
[('a', 4), ('b', 1)][('a', 2), ('b', 1)][('a', 2), ('a', 2), ('b', 1)][('a', 2), ('b', 1), ('a', 2)]правильный ответ
Разбор
groupby объединяет только соседние равные элементы, как uniq в Unix. Поэтому a встречается двумя группами. Чтобы сгруппировать все одинаковые, данные сначала сортируют по тому же ключу или используют Counter или defaultdict.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Генераторное выражение против list comprehension
Следующий вопрос
Итерируемый объект и итератор: разница
Термины по теме
Ещё по теме «Итераторы и генераторы»
- Когда выполняется тело генератора
- Разбить последовательность на пачки
- Рекурсивно развернуть вложенные списки
- Конвейер обработки лога на генераторах
- Свой итерируемый класс, который можно обходить много раз
- Когда выполняется finally в недочитанном генераторе
- Полезные функции itertools
- Ленивые вычисления