python 學習筆記0824

2021-07-04 19:41:38 字數 2619 閱讀 9440

今天是二零一伍年八月二十四日,今天主要是先回顧一下原來我們老師所謂的神奇的python函式,然後在學習一下新的python知識點。

1、python作為高階的動態語言,其中刪去了很多原來靜態語言裡本不需要的規矩,提供了很多便利的函式,比如reduce函式:

# reduce.py

from functools import reduce

def add(x , y ):

return x + y

l = [ 1 , 2 , 3 , 4 , 5 ]

init_val = 0 ;

print( reduce( add , l , init_val) )

結果是: 15

我們給我們的reduce函式傳入了這樣幾個引數:第

一、二元加法函式add();第

二、乙個包含多個內容的物件list;第

三、乙個初始值。那麼reduce函式是做什麼的呢,說白了,就是二元遍歷。就是把我們傳入reduce的那個物件,乙個乙個取出,按照add的方式,以init_val作為初始值,迭代出乙個結果。在3.4以後,這個函式被放在了functools裡面。

說完了reduce,介紹它的乙個兄弟,叫做map。顧名思義,這個函式就是用來對映的。比如:

# map.py

def add_one(x):

return x + 1

l = [ 1 , 2 , 3 , 4 , 5 ]

print( list(map( add_one , l)) )

結果是:

[2, 3, 4, 5, 6]

我定義了乙個一元函式,叫做add_one,放在map裡,於是map函式對list物件裡的每乙個元素都做出了對映,此時的list彷彿就成了我的乙個定義域,而我的add_one就成了一種對映方法。當然,生成的物件是乙個map物件,我們需要轉換一下。而且別忘記我們還有三元對映:

>>> def add(x, y): return x+y 

>>> map(add, range(8), range(8))

[0, 2, 4, 6, 8, 10, 12, 14]

# filter.py

def iseven(x):

return x % 2 == 0

l = [ 1 , 2 , 3 , 4 , 5 ]

print( list(filter( iseven , l) ) )

結果是:

[2,4]

結果相信大家也知道了,就是返還引數函式返還true的內容。其實從乙個意義上來說,也是一種對映,只不過我們還有乙個篩選的功能。看了這麼多函式,我們再來乙個便捷函式,lambda。說白了,這個函式就是乙個快捷定義函式的方法。

>>> g = lambda x : x * 2 

>>> g(3)

6 >>> (lambda x : x * 2)(3)

6

我們還可以以上面的乙個檔案作為例子:

# reduce.py

from functools import reduce

l = [ 1 , 2 , 3 , 4 , 5 ]

init_val = 0 ;

print( reduce( lambda x , y : x + y , l , init_val) )

lambda後面緊跟的就是我們需要的引數,而冒號後面就是我們的return。lambda這個控制代碼對我們往後書寫簡單的函式提供極大的便利。

2、上次我們說道有乙個items函式,可以讓我們遍歷dict裡面的key,value兩個內容。當然要是想只遍歷value,也可以使用dict.value()函式。

3、想要生成乙個列表可以有很多方便的方法:

>>> [x + 1 for x in range(1,11)]

[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

這像我們剛才所說的對映的模式,寫列表生成式時,把要生成的元素表示式x * x放到前面,後面跟for迴圈,就可以把list建立出來。當然我們還可以使用雙元來進行遍歷。

>>> [x + m for x in range(1,5) for m in range(1,3)]

[2, 3, 3, 4, 4, 5, 5, 6]

細心的人可以發現,在列表生成式裡面,如果有兩個for迴圈,它的結構變化成c語言是這樣:

for(int x = 1 ; x < 5 ;x ++ )

}

當然,除了一味的迴圈,我們還可以新增一些if判斷,比如

>>> [x + m for x in range(1,5) for m in range(1,3) if x % 2 == 0 ]

[3, 4, 5, 6]

我們甚至在其中還可以呼叫乙個函式:

>>> [s.lower() for s in l]

0824學習筆記(多型 抽象類 介面 內部類)

同乙個物件不同時刻的不同形態。父類引用指向子類物件。優 提高了程式的擴充套件性。定義方法使用父型別為引數,使用時用具體的子型別參與操作。缺 不能使用子型別特有的功能。轉型 向上轉型 people p new student 父指向子,子轉父。抽象類 沒有方法體的方法是抽象方法。特點 抽象類的成員變數...

python教學筆記 python學習筆記(一)

1.eval 函式 eval是單詞evaluate的縮寫,就是 求.的值的意思。eval 函式的作用是把str轉換成list,dict,tuple.li 1 1,2,3 print eval li 1 di 1 print eval di 1 tu 1 2,4,6 print eval tu 1 執...

python學習筆記

coding utf 8 coding utf 8 應該像八股文一樣在每個指令碼的頭部宣告,這是個忠告 為了解決中文相容問題,同時你應該選擇支援 unicode 編碼的編輯器環境,保證在執行指令碼中的每個漢字都是使用 utf 8 編碼過的。cdays 5 exercise 3.py 求0 100之間...