列表解析生成的是一个完整的列表。昨天已经做过实验,处理很大的数据量时,用列表解析会消耗大量的系统资源。所以处理很大的数据量时,应该用生成器表达式。生成器返回的是一个生成器对象,而非一个大列表。所以这样会节约大量的系统资源。
生成器函数:
def test():
yield 1
yield 3
yield 2
print(test())
result:
<generator object test at 0x00000000011C8150>
其实是返回了一个生成器对象的内存地址。
如何调用:
def test():
yield 1
yield 3
yield 2
print(test().__next__())
print:
1
yield
用来保存函数的状态。
生成器的好处:
1. 占空间小
2. 效率高