1. reduce(函數(shù),序列):
將序列以迭代的形式用函數(shù)處理.
示例程序:
有一個列表A,里面全是數(shù)字,把A里的每一個數(shù)字轉化成對應的字符,如2->'2'。生成一個字符列表,然后把列表的每一個字符鏈接成一個字符串,每個字符之間用~鏈接
a=[1,2,3,4,5,6,7,8,9,0]
def num_to_str(num):
num=str(num)
return num
def str_to_strs(num1,num2):
return num1+'~'+num2
a=map(num_to_str,a)
a=reduce(str_to_strs,a)
此處將a仲字符一個一個迭代下去.但函數(shù)中必須是兩個輸入?yún)?shù)(不能多或少).不然會報錯.
2.filter(function, sequence):
對sequence中的item依次執(zhí)行function(item),將執(zhí)行結果為True的item組成一個List/String/Tuple(取決于sequence的類型)返回:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
>>> def f(x): return x != 'a'
>>> filter(f, "abcdef")
'bcdef'
我好奇將上面程序的map函數(shù)改為filter函數(shù)發(fā)現(xiàn)其返回的序列還是int型的完整序列.原因不明,以后填坑把.
3.lambda函數(shù)也叫匿名函數(shù)
lambda 參數(shù):作用
作用可以是已有的函數(shù),如:a=map(lambda x:str(x),a)
也是對a仲的數(shù)字轉換成字符.
也可以直接寫出處理方式如:
add2=lambda x,y:x+y
print add2(1,2) ?#3
lambda:"kjgsdlkjglfsdk"
這種方法則直接返回此字符串
bar =lambda:'beginman'
print bar() ? ? ? ?#beginman
這樣最上方的程序就可以改為
a=[1,2,3,4,5,6,7,8,9,0]
def str_to_strs(num1,num2):
? ? ? ? ?return num1+'~'+num2
a=map(lambda x:str(x),a)
a=reduce(str_to_strs,a)