filter(...)
filter(function or None, sequence) -> list, tuple, or string ; Return those items of sequence for which function(item) is true. Iffunction is None, return the items that are true. If sequence is a tuple or string, return the same type, else return a list.
1.从sequence过滤,得到function为真的值
filter(lambda x: x > 6,[32,1,45,5,3]) ----> [32, 45]
注:lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边必须是简单的语句,不能是if/while/for/print语句!!!
2.当function为None时,则返回sequence为真的值
filter(None,[0,1,2,3]) ----> [1, 2, 3]
map(...)
map(function, sequence[, sequence, ...]) -> list
Return a list of the results of applying the function to the items of the argument sequence(s). If more than one sequence is given, the function is called with an argument list consisting of the corresponding item of each sequence, substituting None for missing values when not all sequences have the same length. If the function is None, return a list of the items of the sequence (or a list of tuples if more than one sequence).
把sequence中的每个元素作为function参数,返回的值保存在list中。
map(lambda x : x**2,[i for i in range(10)]) ----> [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
当sequence有2个或2个以上时,则把sequence作为整体传给function。
map(lambda x : x+x,([i for i in range(10)],[1,2,3])) ---->[ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 1, 2, 3] ]当function为None时:
map(None,[1,2,3]) ---》[1, 2, 3]
map(None,[1,2,3],[4,5,6,7]) ---》[(1, 4), (2, 5), (3, 6), (None, 7)]
reduce(...)
reduce(function, sequence[, initial]) -> value
Apply a function of two arguments cumulatively to the items of a sequence, from left to right, so as to reduce the sequence to a single value.
For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5). If initial is present, it is placed before the items of the sequence in the calculation, and serves as a default when the sequence is empty.
print reduce(lambda x,y:x+y,[i for i in range(5)]) ---》10
print reduce(lambda x,y:x+y,[i for i in range(5)],10) ----》20