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
'''

 

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