# map()函數(shù)
def power(x):
return x * x
r = map(power, [i for i in range(10) if i % 2 == 2 ])
print(list(r))
for i in r:
print(i)
# 利用map()函數(shù),把用戶輸入的不規(guī)范的英文名字,變?yōu)槭鬃帜复髮?xiě),其他小寫(xiě)的規(guī)范名字。輸入:['adam', 'LISA', 'barT'],輸出:['Adam', 'Lisa', 'Bart']:
L = ['adam', 'LISA', 'barT']
def str_correct(str):
new_str = str.lower().title()
return new_str
print(str_correct('barT'))
new_str_list = map(str_correct, L)
for i in new_str_list:
print(i)
# 配合map(),我們就可以寫(xiě)出把str轉(zhuǎn)換為int的函數(shù):
from functools import reduce
def func(a, b):
return a * 10 + b
def char2num(s):
digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
return digits[s]
result = reduce(func, map(char2num, '23131'))
print('result: ', result)
# 用lambda 改寫(xiě)
result_2 = reduce(lambda x, y: 10 * x + y, map(char2num, '23131'))
print('result_2: ', result_2)
# Python提供的sum()函數(shù)可以接受一個(gè)list并求和,請(qǐng)編寫(xiě)一個(gè)prod()函數(shù),可以接受一個(gè)list并利用reduce()求積:
L = [1, 2, 3, 4, 5, 6, 7, 8]
L2 = [3, 5, 7, 9]
def prod(a, b):
return a * b
result_3 = reduce(prod, L)
print('result_3: ', result_3)
# 用lambda重寫(xiě)
result_4 = reduce(lambda a, b: a * b, L)
print('result_4: ', result_4)
# 使用filter() 結(jié)合 埃氏篩法 篩選素?cái)?shù)
def odd_list():
n = 1
while True:
n = n + 2
yield n
def if_divisible(n):
return lambda x: x % n > 0
def prime():
yield 2
it = odd_list()
while True:
n = next(it)
yield n
it = filter(if_divisible(n), it)
# 回?cái)?shù)
def is_palindrome(n):
s = str(n)
return s == s[::-1]
result_5 = filter(is_palindrome, range(1, 1000))
for i in result_5:
print(i)
# sorted()函數(shù)
# 按照絕對(duì)值排序
L3 = [5, 9, -12, -21, 36]
print('sorted L3: ', sorted(L3, key=abs))
# 使用lambda按照平方值排序
print('sorted L3: ', sorted(L3, key=lambda x: x * x))
# 對(duì)于字符排序默認(rèn)依照ASCII碼
L5 = ['Credit', 'Zoo', 'about', 'bob']
print("sorted string list: ", sorted(L5, key=str.lower))
# 假設(shè)我們用一組tuple表示學(xué)生名字和成績(jī):
# [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
# 請(qǐng)用sorted()對(duì)上述列表分別按名字排序:
L6 = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_name(l):
for i in l:
return i[0]
print(sorted(L6, key=by_name))
# 利用閉包返回一個(gè)計(jì)數(shù)器函數(shù),每次調(diào)用它返回遞增整數(shù)
def create_counter():
s = [0] # !!!
def counter():
s[0] = s[0] + 1 # !!!
return s[0]
return counter
counter = create_counter()
print(counter())
print(counter())
print(counter())
# !!!
def list_test():
L = [0]
L[0] = L[0] + 1
return L
for i in range(10):
print(list_test())
# 輸出
1
2
3
函數(shù)式編程
最后編輯于 :
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 函數(shù)式編程與面向?qū)ο缶幊蘙1]: Lambda表達(dá)式 函數(shù)柯里化 高階函數(shù).md 之劍 2016.5.2 11:1...
- 原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know...
- 第 1 章:為什么使用函數(shù)式編程? 函數(shù)式編程人員: 沒(méi)有任何一個(gè)函數(shù)式編程者會(huì)把變量命名為 x,函數(shù)命名為 f,...
- JavaScript 函數(shù)式編程簡(jiǎn)介 一、案例 案例一 個(gè)人理解 通過(guò)這樣寫(xiě)的一大好處是行為與結(jié)果分步進(jìn)行,更好的...
- 鏈?zhǔn)骄幊趟枷?思想特點(diǎn):是將多個(gè)操作(多行代碼)通過(guò)點(diǎn)號(hào)(.)鏈接在一起成為一句代碼,使代碼可讀性好。a(1).b...