Выбор ответа Middle Итераторы и генераторы обновлено

itertools.groupby на несортированных данных

Вопрос

Что вернёт [(k, len(list(g))) for k, g in groupby("aabaa")]?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: [('a', 2), ('b', 1), ('a', 2)]. groupby объединяет только соседние равные элементы, как uniq в Unix.

Варианты ответа

  1. [('a', 4), ('b', 1)]
  2. [('a', 2), ('b', 1)]
  3. [('a', 2), ('a', 2), ('b', 1)]
  4. [('a', 2), ('b', 1), ('a', 2)]правильный ответ

Разбор

groupby объединяет только соседние равные элементы, как uniq в Unix. Поэтому a встречается двумя группами. Чтобы сгруппировать все одинаковые, данные сначала сортируют по тому же ключу или используют Counter или defaultdict.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме