@YuriyCherniy

Что происходит при выполнении функции sum(1 for _ in g)?

Не могу понять цепочку событий происходящих при выполнении этой части кода. Я понимаю что там обрабатывается объект itertools._grouper и на выходе получаем количество элементов внутри него, но нет полной картины как это происходит. Ниже полный код где применяется эта функция.

from itertools import groupby

lst = ['a', 'c', 'f', 'r', 'a', 'a', 'f']
lst.sort()    
result = {}
for k, g in groupby(lst):
    result[k] = sum(1 for _ in g)
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
adugin
@adugin Куратор тега Python
Подсчитывается "длина" итератора по элементам соответствующей группы, т.е. количество элементов.
Весь алгоритм проще переписать так:
from collections import Counter

lst = ['a', 'c', 'f', 'r', 'a', 'a', 'f']
lst.sort()  # не обязательно
result = Counter(lst)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы