filter
对序列元素进行过滤
filter(function or None, sequence) -> list, tuple, or string
把序列中的元素依次传到function中,
如果function返回True,则保留元素的值,否则丢弃
f = lambda x : x>5
a = range(10)
filter(f, a)
[6, 7, 8, 9]
zip
zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
name=["koma","jane"]
age=[30,20]
addr=["chengdu","wuhan"]
tel=[110]
zip(name,age,addr)
[('koma', 30, 'chengdu'), ('jane', 20, 'wuhan')]
zip(name,age,addr,tel)
[('koma', 30, 'chengdu', 110)]
zip,以长度最短的序列为准
map(None,name,age,addr)
[('koma', 30, 'chengdu'), ('jane', 20, 'wuhan')]
map(None,name,age,addr,tel)
[('koma', 30, 'chengdu', 110), ('jane', 20, 'wuhan', None)]
map,以长度最长的序列为准
长度不够的以None补齐
map
map(function, sequence[, sequence, ...]) -> list
先把多个sequence组成一个sequence,长度不够的以None补齐
如果function为None,则返回新的sequence
否则把新的sequence中的每个元素传递给function
这样function返回的结果组成一个新的list作为最终结果
a=[1,3,5]
b=[2,4,6]
map(None, a, b)
[(1,2), (3,4), (5,6)]
map(lambda x,y : x*y, a, b)
[2, 12, 30]
reduce
reduce(function, sequence[, initial]) -> value
从sequence中依次取2个值传递到function中计算
把计算结果与sequence中下一个元素传递到function中计算
只到sequence中只剩下1个值
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
((((1+2)+3)+4)+5)
可以用来计算级数,阶乘...
级数
计算1+2+...+100
a=range(101)
reduce(lambda x,y : x+y, a)
5050
阶乘
计算5!
a=range(1,6)
reduce(lambda x,y : x*y, a)
120