sum(x * x for x in range(10**7)) 与 sum([x * x for x in range(10**7)]) 的主要区别是?

Python

  1. A.前者是生成器表达式,逐个产出不建完整列表;后者先构造整个列表
  2. B.两者的求和结果不同,生成器表达式会漏掉最后一项
  3. C.前者更慢且更占内存,生成器每次产出都要额外的函数调用开销
  4. D.后者无法执行,列表推导式不能直接放进 sum()