茄子python Python基礎學習(第7天)

2021-10-13 11:15:57 字數 2927 閱讀 4545

第6課

當迴圈結構如for迴圈呼叫乙個迴圈物件時,每次迴圈的時候都會呼叫next方法,知道最後丟擲stopinteration異常,迴圈結構知道結束,停止呼叫next方法。

如:1 #text.txt內容為

2 123

3 123

4 123

5 for line in open('text.txt'):6 print line

open方法返回的是乙個迴圈物件,包含next方法,for迴圈自動呼叫next方法,直至出現stopinteration異常。

用迴圈物件的好處在於:不用在迴圈還沒有開始的時候,就生成好要使用的元素。所使用的元素可以在迴圈過程中逐次生成。這樣,節省了空間,提高了效率,程式設計更靈活。

2、迭代器:

從技術上來說,迴圈物件和for迴圈呼叫之間還有乙個中間層,就是要將迴圈物件轉換成迭代器(iterator)。這一轉換是通過使用iter()函式實現的。但從邏輯層面上,常常可以忽略這一層,所以迴圈物件和迭代器常常相互指代對方。

3、生成器:

構造乙個使用者自定義的迴圈物件

1)生成器的定義方法和函式定義類似,只是在return的地方換成yield;

2)生成器中可以有多個yield,當生成器遇到乙個yield,會暫停執行生成器,返回yield後面的值;當再一次呼叫生成器時,會從剛才的地方繼續執行,直到遇到下乙個yield;

3)生成器本身是乙個迴圈器,每次迴圈返回乙個yield後面的值

下面是乙個生成器:defgen():

a= 100

yielda

a= a*8

yieldayield 1000

#該生成器有3個yield,用作迴圈器時,會進行3輪迴圈

for i ingen():print i

1 defgen():2 for i in range(4):3 yield i

這段**還可以寫成生成器表示式(generator expression):g = (x for x in range(4));生成器表示式是生成器的一種簡單編寫方式

4、表推導(list  comprehension):是快速生成表(list)的方法。

假如要生成表:

l =for i in range(4):

還有更簡單的方法,即:表推導的方法

1 l = [x**2 for i in range(4)]

練習題:

1 x1 = [1,3,5]2 y1 = [9,12,13]3 l = [x**2 for (x,y) in zip(x1,y1) if(y)>10]

l = [9,25]

view code

第7課:函式物件

函式(function)也是乙個物件,函式也有屬性和方法,不僅可以賦值給其它物件名,還可以作為引數傳遞。

1、lambda函式:定義1個函式

1 func = lambda x,y:x+y2 print func(3,4)3

4 等價於5 deffunc(x,y):6 return x+y7 print func(3,4)

lambda生成1個函式物件,引數為x,y,返回值為x+y,函式物件的值賦給func

2、函式作為引數傳遞

函式可以作為物件,進行引數傳遞,函式名即為物件:

def  test(f,a,b):

print 'test'

print f(a,b)

func = lambda x,y:x+y

test(func,1,2)

test函式的第乙個引數就是乙個函式物件,將func賦值給f,也可以這樣寫:test((lambda x,y:x+y),1,2)

3、map函式:格式:map( func, seq1[, seq2...] ),是python的內建函式,第乙個引數是乙個函式物件,第

二、第三個。。。是數列。

map函式的作用是:將函式物件作用於後面的數列的每乙個元素,將每次作用的結果儲存在數列中(在python 3.x中,map()的返回值是乙個迴圈物件。可以利用list()函式,將該迴圈物件轉換成表。)

如下:re = map((lambda x:x+3),[1,2,3])printredeffunc(x,y):return x**2,y**2re= map(func,[1,2,3,4],[2,3,4,5])printre

輸出:[4,5,6]

[(1,4),(4,9),(9,16),(16,25)]

4、filter函式:第乙個引數也是函式物件,將函式物件作用於後面數列的每乙個元素,如果函式物件返回的是true,則該次的元素儲存於返回的數列中,filter函式通過函式物件來篩選資料(同理在python3.x中 filter返回的不是list,還是迴圈物件),如下例子所示:

1 deffunc (x):2 if x>100:3 returntrue4 else:5 returnfalse6 ru = filter(func,[100,104,99,101,123])7 輸出:8 [104, 101, 123]

ps:filter函式最多2個引數,1個函式物件,1個數列,不像map函式可以有多個數列引數。

5、reduce函式:格式:reduce( func, seq[, init] ),第乙個引數也是函式物件,且要求它能接受2個引數,然後每次迭代,將上一次的迭代結果(第一次時為init的元素,如沒有init則為seq的第乙個元素)與下乙個元素一同執行乙個二元的func函式。在reduce函式中,init是可選的,如果使用,則作為第一次迭代的第乙個元素使用。返回多次迭代後的結果,如下例子所示:

1 m = 22 n = 53 print reduce(lambda x,y:x*y,range(1,n+1)) #120

4 print reduce(lambda x,y:x*y,range(1,n+1),m) #240 相當於((((2*1)*2)*3)*4)*5,2為init元素

ps:reduce()函式在3.0裡面不能直接用的,它被定義在了functools包裡面,需要引入包。

36歲自學python Python語言基礎

python 簡介 python是一種開源的 解析性的,物件導向的程式語言。python使用一種優雅的語法,可讀性強 python支援類和多層繼承等的物件導向程式設計技術。python可執行在多種計算機平台和作業系統中,如各位unix,windows,macos,os 2等等 使用python 安裝...

若干種茄子的做法

手撕茄子的做法 材料 長茄子若干個 調料 芝麻醬 生抽 醋 糖 鹽 雞精 蒜汁 喜歡吃辣的就放點紅油和炸辣椒 原料 茄子2條 肉末50克 豆瓣醬 生粉 油 鹽 生抽 蒜 蔥花 做法 1 茄子去皮 切成7厘公尺長 2厘公尺見方的條。用乙個雞蛋和少許澱粉拌勻,讓茄子上薄薄的裹一層粉,這樣省油也免得太油膩...

python python環境配置

python 3 教程 國內源 清華 https 阿里雲 http 中國科技大學 https 華中理工大學 http 山東理工大學 http 豆瓣 http 公升級 pip 到最新的版本 10.0 0 後進行配置 安裝django pip install django或 命令 yum install...