python c函式 三大基礎函式

2021-10-12 11:37:00 字數 2157 閱讀 9574

在python中有三個基礎函式,分別是filter()、map()和reduce(),他們分別為我們提供過濾、對映和聚合的功能。上一節我們簡單的使用了filter()函式結合匿名函式,下面我們會詳細介紹它的用法。

1. filter()函式

在資料篩選和過濾的時候我們通常會採用filter()函式幫助我們快速的解決問題,它的語法格式為:filter(函式,可迭代物件)

在filter函式中,前面放我們的過濾或篩選方式,即函式名,後面存放可迭代的物件,我們看下面的例子:def test(x):

if x % 2 == 0:

return x

my_list = [1,2,3,4,5,6]

print(filter(test,my_list))#只需要些函式名即可,不用加引數

輸出結果:

關於這個例子,我們首先定義了乙個test()函式,如果x是偶數則返回其值,然後通過filter()函式使用test()函式來過濾my_list列表,但是輸出結果卻是,在這裡我們需要注意filter()函式的返回值為乙個可迭代的物件,我們需要通過迭代的方式訪問其中的值,或者使用列表list()函式強制型別轉換。def test(x):

if x % 2 == 0:

return x

my_list = [1,2,3,4,5,6]

print(filter(test,my_list))

for i in filter(test,my_list):

print('迭代後中的資料:',i)

print('使用list()方法:',list(filter(test,my_list)))

輸出結果為:迭代後中的資料: 2

迭代後中的資料: 4

迭代後中的資料: 6

使用list()方法: [2, 4, 6]

2. map()函式

在前面我們曾多次使用到過map()函式,例如我們在輸入多個值的時候,我們會採用map()函式,我們需要輸入四個值的時候:a,b,c,d = map(int,input().split())

print(a,b,c,d)

map()函式的語法格式為:map(函式,可迭代物件)

在使用map()函式的時候,我們大多用於對資料的處理,把可迭代物件中的資料經過函式處理之後儲存,我們在儲存的時候繼續採用list()函式進行儲存。

我們先看上面輸入四個值的例子,int為函式,input().splite輸入的值為可迭代的物件,經過int函式的處理後存放在map物件當中。

我們可以通過map()函式將乙個序列中的所有資料通過乙個函式進行處理,看下面的例子:

我們在乙個列表中存放了一下字母,如果存在小寫字母,那麼將它變成大寫字母。

**如下:def test(x):

if x.islower():

return x.upper()

else:

return x

my_list = ['d','o','t','c','p','p']

print(list(map(test,my_list)))

輸出結果為:['d', 'o', 't', 'c', 'p', 'p']

test()函式中會先對x進行判斷,如果是小寫字母就返回它的大寫字母,如果不是小寫字母就返回它的值。

3. reduce()函式

reduce()函式用於把可迭代的物件通過函式方法進行聚合。

語法格式為:reduce(函式, 可迭代物件[, 初始值])

舉個例子,我們已知乙個列表為[1,2,3,4],我們需要求列表裡所有項依次相乘的和,我們可以使用reduce()函式。from functools import reduce#reduce函式在functools模組中定義,需要引入

def test(x,y):

return x * y

my_list = [1,2,3,4]

print(reduce(test,my_list))

輸出結果為:

第一行**為引入這種方法,後面會對模組進行講解,test()函式返回了兩個資料相乘,然後通過reduce()函式將my_list列表處理。

處理過程如下圖:

先執行第一步,然後得到乙個結果再和後一項相乘,依次到最後一位。

4. 總結

這三種函式我們常用的為前兩者,熟練掌握這三個函式能夠幫助我們解決一系列複雜的問題,下一節我們來學習遞迴函式。

函式基礎(三) 巢狀函式 匿名函式

講完作用域之後 對變數的作用範圍有大致的了解了嗎?講個稍微小高階的東西吧 能夠幫助你更加的理解全域性和區域性變數 從小的一點一點的往大了裝,乙個巢狀乙個 函式也可以這麼玩 msg 我是全域性變數 def func msg 我是函式func的區域性變數 def func1 msg 我是函式func1的...

pythonc函式 在Python中使用C函式

我已經嘗試過網際網路上提到的所有解決方案,但沒有乙個對我有效。在 我有乙個python 為了加快速度,我希望我的 在c函式中執行繁重的計算。我已經寫了這個c函式。在 然後,為了共享這個庫,我在終端做了這個 gcc shared wl,install name,testlib.so o testlib...

前端基礎(三) 函式

在最新的es規範中,宣告函式有4中方法 函式宣告 函式表示式 建構函式function 生成器函式 語法 function name param param2 name 函式名稱 param 需要傳遞給函式的引數的名稱。有最大引數數量限制,不同引擎限制不同。statements 包含函式體的語句 函...