Python3高階函數(shù)習(xí)題解析

? ??????Hello,大家好,小編最近在學(xué)習(xí)廖雪峰老師官網(wǎng)的Python3,想通過(guò)解答每節(jié)知識(shí)點(diǎn)后的練習(xí)題的的方式來(lái)檢驗(yàn)自己的學(xué)習(xí)成果,也希望能幫助和小編一樣的小白解決心中的疑惑,大家共同進(jìn)步。

(1)map/reduce練習(xí)題:

? ? ? ? 1,利用map()函數(shù),把用戶輸入的不規(guī)范的英文名字,變?yōu)槭鬃帜复髮?,其他小寫的?guī)范名字。輸入:['adam', 'LISA', 'barT'],輸出:['Adam', 'Lisa', 'Bart']:

代碼如下:

def normalize(name):

? ?name = name[0].upper()+name[1:].lower() #首字母大寫,其余字母小寫

? ?return name

L1 = ['adam', 'LISA', 'barT']

L2 = list(map(normalize, L1))

print(L2)

? ? 2,Python提供的sum()函數(shù)可以接受一個(gè)list并求和,請(qǐng)編寫一個(gè)prod()函數(shù),可以接受一個(gè)list并利用reduce()求積:

代碼部分:

def prod(L):

? ? sum = 1;

? ? for i in L:

? ? ? sum = sum *i

? ? return sum

print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))

if prod([3, 5, 7, 9]) == 945:

? ? print('測(cè)試成功!')

else:

? ? print('測(cè)試失敗!')

????3,利用map和reduce編寫一個(gè)str2float函數(shù),把字符串'123.456'轉(zhuǎn)換成浮點(diǎn)數(shù)123.456

代碼部分:

from functools import reduce

def str2float(s):

????def fun(x,y):? ??

????????return? x*10+y??

????n = s.index(".")? ? #獲取“.”所在的位置

????s1 =list(map(int,[x for x in s[:n]]))? ? #將整數(shù)部分的字符化成整數(shù)類型的列表

????s2 =list(map(int,[x for x in s[n+1:]]))? ??#將小數(shù)部分的字符化成整數(shù)類型的列表

????return reduce(fun,s1)+reduce(fun,s2)/10**len(s2)

#利用reduce將整數(shù)部分與小數(shù)部分加起來(lái)(**表示階乘)

(2)filter練習(xí)題:

????????回?cái)?shù)是指從左向右讀和從右向左讀都是一樣的數(shù),例如12321,909。請(qǐng)利用filter()篩選出回?cái)?shù):

代碼部分:

def is_palindrome(n):

????s =int(str(n)[::-1])? #先將整數(shù)n轉(zhuǎn)換為字符串形式,[::-1]是指將字符串倒敘排列,然后再轉(zhuǎn)換? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #為整數(shù)

????if s==n:? ? ? ? ? ? ? ?#如果轉(zhuǎn)換前后倆值相等則是回?cái)?shù)

????return s

# 測(cè)試:

output =filter(is_palindrome,range(1,1000))

(3)sorted練習(xí)題:

????假設(shè)我們用一組tuple表示學(xué)生名字和成績(jī):L =[('Bob',75), ('Adam',92), ('Bart',66), ('Lisa',88)]

請(qǐng)用sorted()對(duì)上述列表分別按名字排序:

代碼部分:

# -*- coding: utf-8 -*-

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

def by_name(t):

????return t[0]

L2 = sorted(L, key=by_name)

print(L2)

再按成績(jī)從高到低排序:

代碼部分:

def by_score(t):

? ? return -t[1]? ? ?#先取出成績(jī),然后成績(jī)反方向排列

L2 = sorted(L, key = by_score)

print(L2)

或者:

def by_score(t):

? ? return t[1]

L2 = sorted(L, key = by_score, reverse = True)

print(L2)


? ??????綜上這就是在廖雪峰老師的官網(wǎng)Python3中的高階函數(shù)練習(xí)題了。大家有什么不懂得地方歡迎留言,如果小編哪里寫錯(cuò)了或者您有更好的解決方案,請(qǐng)聯(lián)系小編吧!小編期望與您共同進(jìn)步。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Python 是一種相當(dāng)高級(jí)的語(yǔ)言,通過(guò) Python 解釋器把符合語(yǔ)法的程序代碼轉(zhuǎn)換成 CPU 能夠執(zhí)行的機(jī)器碼...
    Python程序媛閱讀 2,039評(píng)論 0 3
  • # 第一優(yōu)先級(jí)規(guī)則聲明: # 除了夢(mèng)境,每一個(gè)意識(shí)主進(jìn)程都必須與一個(gè)身體參與的機(jī)械進(jìn)程相匹配,否則結(jié)束意識(shí)主進(jìn)程。...
    李洞BarryLi閱讀 4,202評(píng)論 0 1
  • 基礎(chǔ)1.r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義2.'''...'''表示多行內(nèi)容3. 布爾值:True、False(...
    neo已經(jīng)被使用閱讀 1,888評(píng)論 0 5
  • 包(lib)、模塊(module) 在Python中,存在包和模塊兩個(gè)常見概念。 模塊:編寫Python代碼的py...
    清清子衿木子水心閱讀 3,914評(píng)論 0 27
  • 又是一天 而轉(zhuǎn)眼 又是一年 伏于桌前,竟思緒萬(wàn)千 至開學(xué)以來(lái) 靜靜則是手機(jī)的歸宿 講講則是閑聊的開端 然而,何時(shí)會(huì)...
    愛吃魚的空心菜閱讀 300評(píng)論 2 1

友情鏈接更多精彩內(nèi)容