例如,如果我有类似的东西:
sum([i for i in range(very_big_number)])
这种结构是否会针对降低内存成本进行优化?
答案 0 :(得分:1)
这确实会创建一个大型列表,假设您使用的是Python的典型实现,例如标准的CPython:
sum([i for i in range(very_big_number)])
这些将避免创建列表(在Python 2中,您需要xrange()
代替):
sum(i for i in range(very_big_number))
sum(range(very_big_number))
答案 1 :(得分:1)
是的 - 所以您可能想要的是generator expression。
sum(i for i in range(very_big_number))
正如其他人所说,你在Python 2中需要xrange
。
作为额外的好处,您省略了任何其他语法标记,因此它看起来有点整洁:)