2013-10-14 8 views

ответ

5

Использование sum с выражением генератора:

sum(n == fresh for n in buckets['actual'][e]) 

как True == 1 и False == 0, поэтому else не требуется.


Связанные гласит: Is it Pythonic to use bools as ints? , Is False == 0 and True == 1 in Python an implementation detail or is it guaranteed by the language?

+0

Если вы чувствуете себя неуютно неявно используя тот факт, что 'Правда == 1' и' Ложная == 0 ', вы можете сделать этот факт явно, делая 'Int (n == fresh) '. Это полезно только для того, чтобы сделать код более очевидным ... язык не волнует. – SethMMorton

+0

Конечно, но есть также строка [Явная лучше, чем неявная] (http://www.python.org/dev/peps/pep-0020/). Мне лично все равно, но это было на случай, если у OP будет реакция на неявное использование 'bool' as 'int'. Чтобы быть ясным, я не говорю, что вы ошибаетесь ... мой комментарий был добавлением, предназначенным для OP, в случае, если они хотели сделать более самодокументирующий код. – SethMMorton

1

Использование sum() функции:

sum(1 if n == fresh else 0 for n in buckets['actual'][e]) 

или:

sum(1 for n in buckets['actual'][e] if n == fresh) 
Смежные вопросы