1. 程式人生 > >python小白學習筆記(廖老師)10.3

python小白學習筆記(廖老師)10.3

day4:

一、切片

即取指定索引範圍的操作

L[0:3]表示,從索引0開始取,直到索引3為止,但不包括索引3。即索引0,1,2,正好是3個元素。

如果第一個索引是0,還可以省略

二、迭代

當我們使用for迴圈時,只要作用於一個可迭代物件,for迴圈就可以正常執行,而我們不太關心該物件究竟是list還是其他資料型別。

三、列表生成式

舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))

四、生成器

如果列表元素可以按照某種演算法推算出來,那我們是否可以在迴圈的過程中不斷推算出後續的元素呢?這樣就不必建立完整的list,從而節省大量的空間。在Python中,這種一邊迴圈一邊計算的機制,稱為生成器:generator。

所以,我們建立了一個generator後,基本上永遠不會呼叫next(),而是通過for迴圈來迭代它,並且不需要關心StopIteration的錯誤。

定義generator的另一種方法。如果一個函式定義中包含yield關鍵字,那麼這個函式就不再是一個普通函式,而是一個generator

五、迭代器

1.我們已經知道,可以直接作用於for迴圈的資料型別有以下幾種:

一類是集合資料型別,如list、tuple、dict、set、str等;

一類是generator,包括生成器和帶yield的generator function。

這些可以直接作用於for迴圈的物件統稱為可迭代物件:Iterable。

2.可以使用isinstance()判斷一個物件是否是Iterable物件

3.可以被next()函式呼叫並不斷返回下一個值的物件稱為迭代器:Iterator。

4.生成器都是Iterator物件,但list、dict、str雖然是Iterable,卻不是Iterator。

5.Python的for迴圈本質上就是通過不斷呼叫next()函式實現的