我們可以使用yield函式來方便的將乙個列表分割成n分,寫成divide_iter(lst, n)的介面形式。我們這裡注意到yield會把返回值依次儲存到生成器generator中,並且把while迴圈走完。
要注意的是,這裡我們還需要重新掌握以下知識點:
1.列表的切片操作 lst[i*div:(i-1)*div]
2.cel函式獲得小數的進製
3.len獲得list的長度
from math import ceil
def divide_iter
(lst, n)
:if n<=0:
yield lst
return
i,div =0,
ceil
(len
(lst)
/ n)
while iyield lst[i*div :
(i+1
)*div]
i +=1
print
(i)gen =
divide_iter([
1,2,
3,4,
5],0
)print
(gen)
print
(list
(gen)
)gen =
divide_iter([
1,2,
3,4,
5],2
)print
(list
(gen)
)
輸出結果如下:
>[[
1,2,
3,4,
5]]1
2[[1
,2,3
],[4
,5]]
[finished in
1.2s]
如果我們使用for迴圈來列印生成器中的資料,則會得到以下的結果:
for g in gen:
print
(g)
[1,
2,3]
1[4,
5]2[finished in
0.9s]
所以大膽猜想:for迴圈其實就是對in後面的生成其逐步執行next操作,不知道對不對。 用yield關鍵詞實現列表的完全展開
我們可以使用以下 來優雅地實現對多級列表的完全展開,依次讀取不同層級列表的各個數值 關鍵知識點是yield from這句話,表示再次進入到生成器deep flatten中。def deep flatten lst for i in lst iftype i list yield from deep ...
python中的yield關鍵詞用法總結
為了理解yield是什麼,首先要明白生成器 generator 是什麼,在講生成器之前先說說迭代器 iterator 當建立乙個列表 list 時,你可以逐個的讀取每一項,這就叫做迭代 iteration mylist 1 2,3 for i in mylist print i 1 23mylist...
二 關鍵詞 關鍵詞的選擇(二)
1 內容相關 2 搜尋次數多,競爭小 5 商業價值 一 內容相關 當然,這也不一定試用於某些 比如新聞門戶或者純粹依靠廣告贏利的資訊類 很多門戶類 包羅永珍,內容相關性判斷也比較模糊。對這些 來說,只要有流量,就有一定的價值,並不依靠本身的轉化贏利。二 搜尋次數多,競爭小 一般行業通稱都是國語寬泛的...