python 内置函数 map filter reduce lambda
map(函数名,可遍历迭代的对象)
# 列组元素全加 10 # map(需要做什么的函数,遍历迭代对象)函数 map()遍历序列得到一个列表,列表的序号和个数和原来一样 l = [2,3,4,5,6,7,8] t = list(map(lambda x:x+10,l)) #遍历 l,l 里的元素全加10 map得到的结果是可迭代对象所以要list print(t) #===>[12, 13, 14, 15, 16, 17, 18]
filter(函数名,可遍历迭代的对象)
# filter(返回Ture的函数,遍历迭代对象)函数 filter() 遍历序列保留返回Ture的元素组成一个列表 利用filter过滤 l = [1,2,3,4,5] l1 = list(filter(lambda x:x>2,l)) #遍历列表 l,返回 l 里大于2的元素 filter,返回可迭代对象所以要list print(l1) #===>[3, 4, 5]
reduce(函数名,可遍历迭代的对象)
from functools import reduce #用reduce,需要包含这个框架 l = [2,5,8,10] print(reduce(lambda x,y:x+y,l)) #===>25 #reduce用来计算 print(reduce(lambda x,y:x+y,l,5)) #===>30 #默认初始值为None,改为5
三元运算(三目运算),是对简单的条件语句的缩写。
# 书写格式 result = 值1 if 条件 else 值2 # 如果条件成立,那么将 “值1” 赋值给result变量,否则,将“值2”赋值给result变量
并行遍历zip(a,b)函数使用方法:
它接收两个可迭代的对象a,b作为参数,将对象中对应的元素打包成一个个tuple(元组),若传入参数的长度不等,则返回长度和参数中长度最短的对象相同。
print(list(zip([1, 2, 3], ('a', 'b', 'c', 'd')))) # 结果 [(1, 'a'), (2, 'b'), (3, 'c')]
divmod(a,b)
divmod(a,b)方法返回的是数字a与b(也可以是复数)运算结果a//b(除法取整)以及a对b的余数
返回结果类型为tuple
print(divmod(5, 2)) # 结果 (2, 1)
eval
用法一:将字符串中的数学表达式当成有效的表达式来求值并返回计算结果。
用法二:将字符串中的数据类型提取出来并返回此数据类型的数据 如将 ''[1, 2, 2]''转换成[1, 2, 3]
print(eval('1+2+3')) print(type(eval('[1, 2, 3]'))) # 结果 6 # 结果 <class 'list'>
匿名函数就是不需要显式的指定函数
#这段代码 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n:n**n print(calc(10))
你也许会说,用上这个东西没感觉有毛方便呀, 。。。。呵呵,如果是这么用,确实没毛线改进,不过匿名函数主要是和其它函数搭配使用的呢 如和 map filter reduce 使用