взять код:сумма Python (генератор): вызов внешней функции
SUM = sum(x() for x in xs)
Я пишу код, который нуждается в вызове другой функции перед каждым х() такое, что х() будет вычислить правое значение
- это единственный способ сделать это так?
for x in xs: x.pre()
SUM = sum(x() for x in xs)
или
SUM = 0
for x in xs:
x.pre()
SUM += x()
включения x.pre в х, очевидно, возможно, но сделал бы реальный код исключительно некрасиво и трудно читать. есть ли какой-либо способ использования выражений генератора, о которых я не знаю, что позволит достичь того, чего я пытаюсь достичь?
например:
SUM = sum(x(), x.pre() for x in xs)
то будет очевидно, просто несуммируемой кортеж генератор
Другим особенно уродливым способом является 'sum ((x.pre(), x()) [1] для x в xs)' ... –
Явный цикл цикла, который не использует 'sum() 'встроенный - очень хорошее решение. Это очень читаемо, и я не вижу недостатков. –
@Sven: обычно я бы сказал, что имеет (незначительный) недостаток, что он использует изменяемую переменную, но так как все эти объекты 'x' изменяются в любом случае, это капля в океане рассуждений о состоянии, требуемом для чтения этого кода: -) –