Python3中的生成器表达式

与生成器函数一样,生成器表达式也是Python中的一种延迟工具。

生成器表达式的定义

        从语法上,生成器表达式与一般的列表推导式一样,并且支持列表推导的语法(if选择和循环嵌套),不同的是生成器表达式包括在圆括号中,而列表推导式包括在方括号中;并且最重要的区别是:列表推导式是在内存中产生所有的结果集,生成器表达式不在内存中构建结果,而是返回一个生成器对象(支持迭代协议),后面可按需产生值。

# 列表推导式
lst = [x**2 for x in range(4) ]

print(lst)
print('__iter__' in dir(lst))
print('__next__' in dir(lst))

"""
结果:
[0, 1, 4, 9]
True
False
"""
print('*'*30)
# 生成器表达式
gen = (x**2 for x in range(4))
print(gen)
print('__iter__' in dir(gen))
print('__next__' in dir(gen))
"""
结果:
<generator object <genexpr> at 0x00000219FD28EF10>
True
True
"""
print('*'*30)
# 遍历输出
for i in gen:
	print(i)

'''
结果:
0
1
4
9
'''

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章