关于生成器
列表生成式
l = [x for x range(5)] # [0, 1, 2, 3, 4]
生成器
g = (x for x in range(5)) # <generator object <genexpr> at 0x7ff2dd15dea0>
注意: 由生成器表达式所返回的那个迭代器是有状态的,用过一轮之后,就不要反复使用了
g = (x for x in range(5))
print(list(g)) # [0, 1, 2, 3, 4]
print(list(g)) # []
当数据非常多时
对于列表生成式,当输入的数据比较少时,不会出问题。
但如果输入的数据非常多,那么可能会消耗大量内存,并导致程序崩溃。
这时候考虑生成器。
g = (len(x) for x in open('t.txt'))