Что означает выделенный код в переборе списка в python?

def __init__(self, limit):
self.limit = limit
self.records = []
...
...
def get_today_stats(self):
today = dt.date.today()
return sum(rec.amount for rec in self.records
if rec.date == today)


class Record:
def __init__(self, amount, comment, date):
self.amount = float(amount)
self.comment = comment
self.date = date

cash_calculator.add_record(Record(amount=3000, comment='бар в Танин др', date='08.11.2019'))

Можно ли его записать более понятно (например через if)?
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MEDIOFF
Python Developer
Это генераторное выражение, и очень странно что оно написано оно, ибо sum не принимает генераторы, и должна быть ошибка, должно быть списковое включение:
return sum([rec.amount for rec in self.records
if rec.date == today])

Можно ли его записать более понятно (например через if)?

Можно, но зачем, это вам надо будет создавать отдельный список и в него добавлять элементы, зачем оно спрашивается
Что бы подробней узнать про такие выражения вот вам источник

Поправка: ошибся, с генераторами тоже работает
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы