目錄
1、map()函式
2、reduce()函式
3、匿名函式lambda
input: 函式f,列表list
output:list
作用:可以把乙個 list 轉換為另乙個 list,只需要傳入轉換函式。
map()是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。
例如,對於list [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果希望把list的每個元素都作平方,就可以用map()函式:
因此,我們只需要傳入函式f(x)=x*x,就可以利用map()函式完成這個計算:
def f(x):
return x*x
print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
輸出結果:
[1, 4, 9, 10, 25, 36, 49, 64, 81]
注意:map()函式不改變原有的 list,而是返回乙個新的 list。
由於list包含的元素可以是任何型別,因此,map() 不僅僅可以處理只包含數值的 list,事實上它可以處理包含任意型別的 list,只要傳入的函式f可以處理這種資料型別。
【任務】
假設使用者輸入的英文名字不規範,沒有按照首字母大寫,後續字母小寫的規則,請利用map()函式,把乙個list(包含若干不規範的英文名字)變成乙個包含規範英文名字的list:
輸入:['adam', 'lisa', 'bart']
輸出:['adam', 'lisa', 'bart']
def format_name(s):
s1=s[0:1].upper()+s[1:].lower();
return s1;
print map(format_name, ['adam', 'lisa', 'bart'])
input: 函式f,列表list
output:函式f輸出結果
作用:把乙個函式作用在乙個序列[x1, x2, x3, ...]
上,這個函式必須接收兩個引數,reduce
把結果繼續和序列的下乙個元素做累積計算:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
舉例:序列[1, 3, 5, 7, 9]
變換成整數13579:
>>> from functools import reduce
>>> def fn(x, y):
... return x * 10 + y
...>>> reduce(fn, [1, 3, 5, 7, 9])
13579
str2int
的函式:
from functools import reduce
digits =
def str2int(s):
def fn(x, y):
return x * 10 + y
def char2num(s):
return digits[s]
return reduce(fn, map(char2num, s))
還可以用lambda函式進一步簡化成:
from functools import reduce
digits =
def char2num(s):
return digits[s]
def str2int(s):
return reduce(lambda x, y: x * 10 + y, map(char2num, s))
程式設計中提到的 lambda 表示式,通常是在需要乙個函式,但是又不想費神去命名乙個函式的場合下使用,也就是指匿名函式。
先舉乙個普通的 python 例子:將乙個 list 裡的每個元素都平方:
map( lambda x: x*x, [y for y in range(10)] )
等同於下面的實現:
def sq(x):
return x * x
map(sq, [y for y in range(10)])
python常用函式 python常用函式精講
返回值為bool型別的函式 bool是boolean的縮寫,只有真 true 和假 false 兩種取值 bool函式只有乙個引數,並根據這個引數的值返回真或者假。引數如果預設,則返回false 引數轉換使用標準的邏輯測試表示式 傳入布林型別時,按原值返回 傳入字串時,空字串返回false,否則返回...
python常用函式中文 python常用函式
一 數學相關 1 絕對值 abs 1 2 最大最小值 max 1,2,3 min 1,2,3 3 序列長度 len abc len 1,2,3 len 1,2,3 4 取模 divmod 5,2 2,1 5 乘方 pow 2,3,4 2 3 4 6 浮點數 round 1 二 功能相關 1 函式是否...
Python常用函式
常用函式 abs x abs 返回乙個數字的絕對值。如果給出複數,返回值就是該複數的模。print abs 100 100 print abs 1 2j 2.2360679775 callable object callable 函式用於測試物件是否可呼叫,如果可以則返回1 真 否則返回0 假 可呼...