以下两种方法做同样的事情。哪一个在时间/空间复杂性方面更有效?
** 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)
答案 0 :(得分:1)
方法B看起来很怪异和多余。你可以把它缩短为:
[some_operation(grade) for student in group.students for grade in student.grades]
但是A方法更好,因为它没有创建列表。制作一个简单的列表就会让读者感到困惑并浪费记忆。
答案 1 :(得分:0)
它们具有相同的时间复杂度O(nm)
,因为它是另一个循环的循环。因此,n
为group.students
,m
为students.grades
。从功能上讲,这些应该是同一时间的复杂性,因为它以任何一种方式迭代两个列表。