列表推导式和生成器表达式的区别
列表推导式 [x*2 for x in range(10)] 和生成器表达式 (x*2 for x in range(10)) 有何区别?
回答
Yahuda
- 语法:列表推导式用
[],生成器表达式用()。 - 内存:列表推导式立即生成完整列表(O(n) 内存);生成器表达式惰性求值,每次迭代生成一个值(O(1) 内存)。
- 性能:生成器表达式适合处理大数据集,避免内存溢出。
- 可用操作:列表推导式结果可索引、切片;生成器表达式只能迭代一次。
- 示例:
sum(x*2 for x in range(10**7))用生成器节省内存。