python 内置函数 map filter reduce lambda

时间:2022-07-20 17:36:18
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 使用