两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

在Python中有三個(gè)基礎(chǔ)函數(shù),分別是filter()、map()和reduce(),他們分別為我們提供過濾、映射和聚合的功能。上一節(jié)我們簡單的使用了filter()函數(shù)結(jié)合匿名函數(shù),下面我們會(huì)詳細(xì)介紹它的用法。

1. filter()函數(shù)

在數(shù)據(jù)篩選和過濾的時(shí)候我們通常會(huì)采用filter()函數(shù)幫助我們快速的解決問題,它的語法格式為:

filter(函數(shù),可迭代對象)

在filter函數(shù)中,前面放我們的過濾或篩選方式,即函數(shù)名,后面存放可迭代的對象,我們看下面的例子:

def test(x):
    if x % 2 == 0:
        return x
my_list = [1,2,3,4,5,6]
print(filter(test,my_list))#只需要些函數(shù)名即可,不用加參數(shù)

輸出結(jié)果:

<filter object at 0x034C2DD8>

關(guān)于這個(gè)例子,我們首先定義了一個(gè)test()函數(shù),如果x是偶數(shù)則返回其值,然后通過filter()函數(shù)使用test()函數(shù)來過濾my_list列表,但是輸出結(jié)果卻是<filter object at 0x034C2DD8>,在這里我們需要注意filter()函數(shù)的返回值為一個(gè)可迭代的對象,我們需要通過迭代的方式訪問其中的值,或者使用列表list()函數(shù)強(qiáng)制類型轉(zhuǎn)換。

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('迭代后中的數(shù)據(jù):',i)
print('使用list()方法:',list(filter(test,my_list)))

輸出結(jié)果為:

迭代后中的數(shù)據(jù): 2
迭代后中的數(shù)據(jù): 4
迭代后中的數(shù)據(jù): 6
使用list()方法: [2, 4, 6]

2. map()函數(shù)

在前面我們曾多次使用到過map()函數(shù),例如我們在輸入多個(gè)值的時(shí)候,我們會(huì)采用map()函數(shù),我們需要輸入四個(gè)值的時(shí)候:

a,b,c,d = map(int,input().split())
print(a,b,c,d)

map()函數(shù)的語法格式為:

map(函數(shù),可迭代對象)

在使用map()函數(shù)的時(shí)候,我們大多用于對數(shù)據(jù)的處理,把可迭代對象中的數(shù)據(jù)經(jīng)過函數(shù)處理之后存儲(chǔ),我們在存儲(chǔ)的時(shí)候繼續(xù)采用list()函數(shù)進(jìn)行存儲(chǔ)。

我們先看上面輸入四個(gè)值的例子,int為函數(shù),input().splite輸入的值為可迭代的對象,經(jīng)過int函數(shù)的處理后存放在map對象當(dāng)中。

我們可以通過map()函數(shù)將一個(gè)序列中的所有數(shù)據(jù)通過一個(gè)函數(shù)進(jìn)行處理,看下面的例子:

我們在一個(gè)列表中存放了一下字母,如果存在小寫字母,那么將它變成大寫字母。

代碼如下:

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)))

輸出結(jié)果為:

['D', 'O', 'T', 'C', 'P', 'P']

test()函數(shù)中會(huì)先對x進(jìn)行判斷,如果是小寫字母就返回它的大寫字母,如果不是小寫字母就返回它的值。

3. reduce()函數(shù)

reduce()函數(shù)用于把可迭代的對象通過函數(shù)方法進(jìn)行聚合。

語法格式為:

reduce(函數(shù), 可迭代對象[, 初始值])

舉個(gè)例子,我們已知一個(gè)列表為[1,2,3,4],我們需要求列表里所有項(xiàng)依次相乘的和,我們可以使用reduce()函數(shù)。

from functools import reduce#reduce函數(shù)在functools模塊中定義,需要引入
def test(x,y):
    return x * y
my_list = [1,2,3,4]
print(reduce(test,my_list))

輸出結(jié)果為:

python函數(shù)3

第一行代碼為引入這種方法,后面會(huì)對模塊進(jìn)行講解,test()函數(shù)返回了兩個(gè)數(shù)據(jù)相乘,然后通過reduce()函數(shù)將my_list列表處理。

處理過程如下圖:

    python函數(shù)4

先執(zhí)行第一步,然后得到一個(gè)結(jié)果再和后一項(xiàng)相乘,依次到最后一位。

4. 總結(jié)

這三種函數(shù)我們常用的為前兩者,熟練掌握這三個(gè)函數(shù)能夠幫助我們解決一系列復(fù)雜的問題,下一節(jié)我們來學(xué)習(xí)遞歸函數(shù)。


點(diǎn)贊(1)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程

從零到寫出一個(gè)爬蟲的Python編程課程

只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯