list comprehension是否总是在Python中创建一个列表?

时间:2017-10-01 10:05:06

标签: python list-comprehension

例如,如果我有类似的东西:

sum([i for i in range(very_big_number)])

这种结构是否会针对降低内存成本进行优化?

2 个答案:

答案 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

作为额外的好处,您省略了任何其他语法标记,因此它看起来有点整洁:)