a =
(x for x in
range(10
))print
(a)print
(type
(a))
輸出為:
at 0x000001bd5edad930
>
<
class
'generator'
>
可見a是乙個生成器
下面我們把它的元素輸出:
1.
a =
(x for x in
range(10
))print
(list
(a))
輸出為:
[0,
1,2,
3,4,
5,6,
7,8,
9]
2.
a =
(x for x in
range(10
))print
(a.__next__())
print
(a.__next__())
print
(a.__next__())
print
(a.__next__())
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(next
(a))
輸出:
012
3456
789
上面我們已經把a中的元素全部輸出了,如果繼續print的話就會出錯
如下:
traceback (most recent call last)
: file "c:/users/top/pycharmprojects/untitled4/venv/a_4.py"
, line 12,in
print
(next
(a))
stopiteration01
2345
6789
生成器,我們把它從頭到尾遍歷一遍,他就沒了,如下:
a =
(x for x in
range(10
))print
(a.__next__())
print
(a.__next__())
print
(a.__next__())
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(type
(a))
print
('就算元素全沒了,我還是generator!!!'
,list
(a))
輸出:
012
3456
789<
class
'generator'
>
就算元素全沒了,我還是generator!!! [
]
或者:
a =
(x for x in
range(10
))print
(list
(a))
#這個地方遍歷了
print
(a.__next__())
print
(a.__next__())
print
(a.__next__())
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(next
(a))
print
(type
(a))
#print('就算元素全沒了,我還是generator!!!',list(a))
輸出:
[0,
1,2,
3,4,
5,6,
7,8,
9]traceback (most recent call last)
: file "c:/users/top/pycharmprojects/untitled4/venv/a_4.py"
, line 3,in
print
(a.__next__())
stopiteration
#這個
print
(a)#不是遍歷,提醒一下。
python 生成器作用 Python生成器
生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...
python生成器好處 Python生成器筆記
python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...
python生成器函式 Python 生成器函式
一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...