##map-reduce
#
print('-----map/reduce----')
def f(x):
return x * x
r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
print(list(r))
print(list(map(str, [1, 2, 3, 4, 5, 6, 7])))
from functools import reduce
def add(x, y):
return x + y
r = reduce(add, [1, 3, 5, 7, 9])
print(r)
def fn(x, y):
return x * 10 + y
print(reduce(fn, [1, 3, 5, 7, 9]))
def char2num(i):
digits = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}
return digits[i]
def fn(x, y):
return x * 10 + y
print('map-reduce:', reduce(fn, map(char2num, '13579')))
DIGITS = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}
def str2int(s):
def fn(x, y):
return x * 10 + y
def char2num(i):
return DIGITS[i]
return reduce(fn, map(char2num, s))
print('str2int:', str2int('13579'))
##lambda
#我還不會(huì)寫/??/
##練習(xí)
def normalize(name):
return name[:1].upper()+name[1:].lower()
L1 = ['adam', 'LISA', 'barT']
L2 = list(map(normalize, L1))
print(L2)
##filter
print('-----filter-----')
def is_odd(n):
return n % 2 == 1
print(list(filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9])))
def not_empty(s):
return s and s.strip()
print(list(filter(not_empty, ['A', '', 'B', None, 'C', ' '])))
#構(gòu)造一個(gè)從3開(kāi)始的奇數(shù)系列
def _odd_iter():
n = 1
while True:
n = n + 2
yield n
#篩選函數(shù) 返回的是一個(gè)函數(shù) x % 5 > 0
def _not_divisible(n):
return lambda x: x % n > 0
#生成器,不斷返回下一個(gè)素?cái)?shù)
def primes():
yield 2
it = _odd_iter()
while True:
n = next(it)
yield n
it = filter(_not_divisible(n), it)
for n in primes():
if n < 20:
print(n)
else:
break
##回?cái)?shù)練習(xí)
def is_palindrome(n):
s = str(n)
for i in range(0, len(s)//2):
if(s[i] != s[len(s) - i - 1]):
return False
return True
print(list(filter(is_palindrome, range(1, 1000))))
##sorted
#
print('---sorted---')
print(sorted([36, 5, -12, 9, -21]))
print(sorted([36, 5, -12, 9, -21], key = abs))
print(sorted(['bob', 'about', 'Zoo', 'Credit'], key = str.lower))
print(sorted(['bob', 'about', 'Zoo', 'Credit'], key = str.lower, reverse = True))
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_score(l):
return l[1]
def by_name(l):
return l[0].lower()
print(sorted(L, key=by_score, reverse=True))
print(sorted(L, key=by_name))
chapter6 高階函數(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)書系信息發(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 讀代碼:from functools import reduce導(dǎo)入reduce函數(shù)def fn(x, y):.....
- 函數(shù)式編程與面向?qū)ο缶幊蘙1]: Lambda表達(dá)式 函數(shù)柯里化 高階函數(shù).md 之劍 2016.5.2 11:1...
- 在函數(shù)式編程中,允許采用變量保存函數(shù),也可以將函數(shù)作為參數(shù)值或者返回值。因此,必然存在一種函數(shù),它以另一個(gè)函數(shù)作為...
- 構(gòu)造一層又一層的抽象來(lái)處理(并隱藏)瑣碎的細(xì)節(jié)。隨著硬件能力的提高,將越來(lái)越多的任務(wù)轉(zhuǎn)嫁給語(yǔ)言和運(yùn)行時(shí)。 函數(shù)式思...
- 致鄭冰冰 2017.6.27 上周去你那里 早起洗臉的時(shí)候你輕描淡寫的來(lái)了句 好像還有件事情沒(méi)有告訴你們 于是就見(jiàn)...