хорошо вы можете сделать что-то вроде этого, который использует список понимание:
for g in (g for g in games if not g.score_ratio_h1):
g.score_ratio_h1 = avg_score_ratio_h1
это может быть возможно, немного быстрее ... но странно :)
EDIT:
Я согласен с этими двумя комментариями, однако он не может быть полностью расточителен в зависимости от «если» состояния, ее е пример:
lst = [0 for _ in xrange(708)]
for i in xrange(100000000):
if i**2 < 500000:
lst[i] += i
время:
real 0m12.906s
user 0m12.876s
sys 0m0.008s
против:
lst = [0 for _ in xrange(708)]
for i in (i for i in xrange(100000000) if i**2 < 500000):
lst[i] += i
время:
real 0m8.857s
user 0m8.792s
sys 0m0.016s
Я предполагаю, что в зависимости от состояния и размера цикл это может быть действительно расточительным, но в sometim это может помочь сыграть вокруг понимания списка, даже в этом случае.
На мой взгляд, это не очень хороший пример использования для списка. Перечисления списков лучше всего подходят, когда вы выполняете фильтрацию и проекцию функционального стиля, не изменяя исходные элементы. Здесь вы мутируете каждую игру. – recursive
Если вы не видите 'append()' в своем цикле где-то, это, вероятно, не представляется возможным в качестве понимания списка. – kindall
Следующая ссылка о том, почему следует избегать понимания списка с побочным эффектом http://stackoverflow.com/questions/5753597/is-it-pythonic-to-use-list-comprehensions-for-just-side-effects –