20 高階特性之內置方法(1)

2022-05-12 06:18:33 字數 1700 閱讀 2018

map(function, sequence[, sequence, ...])根據提供的函式對指定序列做對映

#函式需要乙個引數

m = map(lambda x: x*x, [1, 2, 3])

print(m,'\n')#結果為:[1, 4, 9]

print(list(m),'\n')#結果為:[1, 4, 9]

#函式需要兩個引數

m = map(lambda x, y: x+y, [1, 2, 3], [4, 5, 6])

print(list(m),'\n')#結果為:[5, 7, 9]

def f1( x, y ):

return (x,y)

l1 = [ 0, 1, 2, 3, 4, 5, 6 ]

l2 = [ 'sun', 'm', 't', 'w', 't', 'f', 's' ]

l3 = map( f1, l1, l2 )

print(list(l3)) #結果為:[(0, 'sun'), (1, 'm'), (2, 't'), (3, 'w'), (4, 't'), (5, 'f『),(6, 's』)]

reduce(function, sequence[, initial])對引數序列中元素進行累積
#在python 3裡,reduce()函式已經被從全域性名字空間裡移除了,它現在被放置在functools模組裡

#reduce返回的是乙個非iterator的iterable,所以直接列印輸出

from functools import reduce

r = reduce(lambda x, y: x+y, [1,2,3,4]) #10

print(r,'\n')

r = reduce(lambda x, y: x+y, [1,2,3,4],5) #15

print(r,'\n')

r = reduce(lambda x, y: x+y, ['aa', 'bb', 'cc'], 'dd') #'ddaabbcc'

print(r,'\n')

filter(function or none, sequence)對指定序列執行過濾操作
f = filter(lambda x: x%2, [1, 2, 3, 4])

print(list(f),'\n')

f = filter(none, "hello")

print(list(f),'\n')

sorted

匿名函式

f = lambda x: x*x

print(f,'\n')

print(f(2),f(4),'\n')

def fn(x,y):

return (lambda x,y: x*x+y*y)

f2 = fn(3,4) #只是返回乙個函式

print(f2,'\n', f2(3,4),'\n') #f2(3,4)才是呼叫了函式

#得到[1,20)的所有奇數

l = list(filter((lambda x: x%2==1), range(1,20)))

print(l,'\n')

24 高階特性之內置方法(5)

functools 是python2.5被引入的,一些工具函式放在此包 import functools print dir functools 偏函式 partiialfunction 把原函式的某些引數設為預設引數,返回乙個新函式名,以簡化函式呼叫的形式 引入背景 import functool...

21 高階屬性之內置方法(2)

map map f,i 等價於對i的每個元素i i 都執行f,然後再把所有f i i 拼接成乙個iterator並返回 map傳入函式和乙個iterable 乙個序列 返回乙個iterator 注意到iterator是惰性序列,只有被呼叫才能被獲取,要通過諸如list,for等等 迭代出來 def ...

python之內置高階函式

把函式作為引數傳入,這樣的函式稱為高階函式,函式式程式設計就是指這種高度抽象 的程式設計正規化。我們具體用兩個小案例來說明map 接收使用者輸入3個字串數字 依次將接收的三個數轉換為整形 對於序列每個元素求絕對值 nums input 請輸入 split int nums list map int,...