1

以下两种方法做同样的事情。就时间/空间复杂度而言,哪一个更有效?

** 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)
4

2 回答 2

1

方法 B 看起来很奇怪而且多余。您可以将其缩短为:

[some_operation(grade) for student in group.students for grade in student.grades]

但无论哪种方式,方法 A 都更好,因为它不会创建列表。只是为了扔掉它而制作一个列表会使读者感到困惑并浪费记忆。

于 2016-09-29T20:52:26.583 回答
0

它们具有相同的时间复杂度,O(nm),因为它是另一个循环之上的循环。所以,ngroup.studentsmstudents.grades。从功能上讲,这些也应该是相同的时间复杂度,因为它以任何一种方式迭代两个列表。

于 2016-09-29T20:51:45.873 回答