生成器表达式Generator expression
语法
(返回值 for元素 in可迭代对象 if条件)
返回一个生成器
和列表解析式的区别
生成器表达式是按需计算(称惰性求值、延迟计算),需要的时候才计算值
列表解析式是立即返回值
生成器
可迭代对象(可迭代对象未必是迭代器,但是迭代器一定是可迭代对象)
迭代器
只有迭代器可以用next,用iter可以将一个可迭代对象转换成迭代器
a = (i for i in range(10))
next(a)
1
--------------------------------------------
next(range(1,3))
'range' object is not an iterator
生成器表达式
举例:
g=("{:04}".format(i)for i in range(1,11))
next(g)
for x in g:
print(x)
print('~~~~~~~~')
for x in g:
print(x)
0002
0003
0004