python學習筆記(三) python高階特性

2021-08-17 18:56:58 字數 3694 閱讀 8322

python的高階特性有切片、迭代、列表生成式、生成器、迭代器等,下面來介紹這幾種高階特性:

1、切片:

切片特別簡單,用中括號表示範圍,包前不包後。就是中括號裡邊的範圍前面的數值被包括在內,後面的數值不被包括在內。

l = ['a','b','c','d']

l[0:3] 索引從0開始取到3,不包括3.索引從0開始,0可以省略 l[:3]

l[1:3] 索引從1開始取到3,不包括3.

l[-2:] 倒數第二個元素到最後。

l[:] 整個list

tuple、字串也可以做切片。

2、迭代:

迭代通過for ... in  完成。

給定乙個list或者tuple,用for迴圈遍歷,稱為迭代。

dict迭代:for key in d / for value in d.values / for k,v in d.items()

判斷乙個物件是否可迭代:

from

collections

import

iterable

isinstance(

'aaa'

, iterable)

如何對list實現下標迴圈?

python內建的enumerate函式可以把乙個list變成索引-元素對。

for

i, value

in

enumerate([

'a',

'b',

'c']):

3、列表生成式:

列表生成式(

list comprehensions

):建立列表。

python內建的非常簡單卻強大的可以用來建立list的生成式。

生成list[1,2,3,4,5,6,7,8,9,10] -> list[range(1,11)]

生成list[1*1,2*2,3*3,...,10*10] -> [x*x for x in range(1,11)]

寫列表生成式時,把要生成的元素

x * x

放到前面,後面跟

for迴圈,就可以把list建立出來

使用:列出當前目錄下的所有檔案和目錄名

import

os[d

for

din

os.listdir(

'.')]

4、生成器:

通過列表生成式建立列表的方法受到記憶體限制,列表容量有限。且占用儲存空間大,浪費空間。

生成器(generator):一邊迴圈,一邊計算的機制。

建立generator方法:

(1)、把生成式[ ]轉換為( )

l = [x * x

for

xin

range(

10)]

g = (x * x

for

xin

range(

10))

獲取generator元素 next(g)

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

next(g)使用麻煩,可以用for迴圈迭代。

for n in g:

(2)、把函式中print(x)轉換為 yield(x)

yield是中斷,函式中有yield就不再是普通函式,而是generator。

用for

迴圈呼叫generator時,發現拿不到generator的

return

語句的返回值。如果想要拿到返回值,必須捕獲

stopiteration

錯誤,返回值包含在

stopiteration

的value

5、迭代器:

可以直接作用於for迴圈的資料型別:

1、list、tuple、dict、set、str

2、generator,包括生成器和帶yield的generator function

可以直接作用於for迴圈的物件統稱為可迭代物件:iterable.

判斷乙個物件是否為可迭代物件:isinstance()

from

collections

import

iterable

isinstance(, iterable)

isinstance({}, iterable)

isinstance(

'aaa'

, iterable)

isinstance((x

for

xin

range(

10)), iterable)

迭代器(iterator):可以被next()函式呼叫,並不斷返回下乙個值的物件。

生成器都是

iterator

物件,但

list

dict

str

雖然是

iterable

,卻不是

iterator

原因:迭代器物件表示的是乙個資料流,迭代器函式可以被next()呼叫並不斷返回下乙個資料,直到沒有資料時丟擲

stopiteration

錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷通過

next()

函式實現按需計算下乙個資料,所以

iterator

的計算是惰性的,只有在需要返回下乙個資料時它才會計算。

凡是可作用於

for迴圈的物件都是

iterable

型別;凡是可作用於

next()

函式的物件都是

iterator

型別,它們表示乙個惰性計算的序列;

集合資料型別如

list

、dict

、str

等是iterable

但不是iterator

,不過可以通過

iter()

函式獲得乙個

iterator

物件。python的

for迴圈本質上就是通過不斷呼叫

next()

函式實現的。

怎樣學習python語言 如何學習python語言

python語言很神秘嗎 python作為一款類自然語言的程式語言,很方便的就可以上手,而且可以說是老少皆宜。用python程式設計非常簡單,只要有一台電腦 無論windows或者蘋果 就可以完成python程式設計。完成python程式設計首先需要在電腦上安裝python環境,安裝完成後就可以開始...

python學習筆記(三)

python的序列 列表,元組,字串都是列表,列表的主要特點是索引和切片操作 序列的基本操作 1.len 求序列的長度 2.連線兩個序列 3.重複序列元素 4.in判斷序列是否在元組中 5.max 返回最大值 6.min 返回最小值 7.cmp tup1,tup2 比較兩個序列的值 元組 元組和字串...

python學習筆記三

一 輸出 print的幾種用法 print hello world hello world中間有空格 print hello wolrd helloworld 中間沒有空格 print hello wolrd helloworld 中間沒有空格 print hello world hello wor...