Python 筆記 4 高階特性

2022-03-11 00:52:48 字數 1855 閱讀 6113

取乙個list或tuple的部分元素是非常常見的操作。python提供了切片操作符,來完成部分元素的選取

除了上例簡單的下標範圍取元素外,python還支援一些其他的騷操作,如下:

如果給定乙個list或tuple,我們可以通過for迴圈來遍歷這個list或tuple,這種遍歷我們稱為迭代(iteration)。

列表生成式

列表生成式即list comprehensions,是python內建的非常簡單卻強大的可以用來建立list的生成式

同樣,我們也可以自定義每個元素的處理規則

列表生成器

通過列表生成式,我們可以直接建立乙個列表,但是收到記憶體限制,列表容量肯定是有限的,如果列表元素可以按照某種演算法推算出來,那我們是否可以在迴圈的過程中不斷推算出後續的元素呢?這樣就不必建立完整的list,從而節省大量的空間。在python中,這種一邊迴圈一邊計算的機制,稱為生成器:generator

從示例中我們可以看出,在寫出規則的後,要產生生成器,只需要將[換成(即可

如果要乙個乙個列印出來,可以通過next()函式獲得generator的下乙個返回值

說明:generator儲存的是演算法,每次呼叫next(g),就計算出g的下乙個元素的值,直到計算到最後乙個元素,沒有更多的元素時,丟擲stopiteration的錯誤。

或者我們也可以直接使用迭代演算法

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

迭代器

python的iterator物件表示的是乙個資料流,iterator物件可以被next()函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷通過next()函式實現按需計算下乙個資料,所以iterator的計算是惰性的,只有在需要返回下乙個資料時它才會計算。

python筆記3高階特性

切片 閱讀 117822 取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下 l michael sarah tracy bob jack 取前3個元素,應該怎麼做?笨辦法 l 0 l 1 l 2 michael sarah tracy 之所以是笨辦法是因為擴充套件一下,取...

python筆記 高階特性 迭代

目錄 2.1對dict中的key進行迭代 2.2對dict中的value進行迭代 2.3對dict中的key,value進行迭代 迭代 iterable 順便一提.iterature文學 使用collections模組的ierable型別進行判斷,方法如下 from collections impo...

python筆記 高階特性 切片

一 應用 取乙個list或tuple的部分元素 二 對list進行連續切片操作 初始值 比如定義乙個list並賦值如下 l michael sarah tracy bob jack 3.1直接輸出l l l michael sarah tracy bob jack 3.1正數切片 從前面開始取元素 ...