Следующие два метода делают то же самое. Какой из них более эффективен с точки зрения сложности времени/пространства?Понимание списка Python против вложенного цикла, краткости/эффективности
** Method A**
for student in group.students:
for grade in student.grades:
some_operation(grade)
** Method B**
for grade in [grade for student in group.students for grade in student.grades]
some_operation(grade)
B: потребляет больше памяти, потому что он создает промежуточный список. Вместо этого используйте выражение генератора: 'для оценки в классе (класс ...): some_operation (grade)'. – Bakuriu
@Bakuriu, "()" указать генератор? Таким образом, список «классов» не будет создан по мере того, как мы его пропишем? – cheng
Связанные темы http://stackoverflow.com/questions/47789/generator-expressions-vs-list-comprehension http://stackoverflow.com/questions/19933753/generator-vs-list-comprehension – cheng