十、lambda表达式、内置函数之filter、map、reduce

lambda表达式
 
学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即:
# 普通条件语句
if 1 == 1:
name = 'wupeiqi'
else:
name = 'alex'
 
# 三元运算
name = 'wupeiqi' if 1 == 1 else 'alex'
对于简单的函数,也存在一种简便的表示方式,即:lambda表达式
 
# ###################### 普通函数 ######################
# 定义函数(普通方式)
def func1(arg):
return arg + 1
 
# 执行函数
func1(123)
 
# ###################### lambda ######################
 
# 定义函数(lambda表达式)
func2 = lambda arg : arg + 1
 
# 执行函数
func2(123)
 
lambda存在意义就是对简单函数的简洁表示,也支持传递多个参数,也支持动态参数,如下:
func3 = lambda a,b: a + b
func3(11,12)
 
 
==============================================================================
==============================================================================
==============================================================================
map方法:
遍历序列,对序列中每个元素进行操作,最终获取新的序列,如:
 
每个元素增加100
li = [11,22,33]
def func(arg):
return arg +100
new_list = map(func,li)
print (new_list)
 
更简便用lambda表达式来做:
li = [11, 22, 33]
new_list = map(lambda a: a + 100, li)
 
 
两个列表对应元素相加
li = [11, 22, 33]
sl = [1, 2, 3]
new_list = map(lambda a, b: a + b, li, sl)
================================================================================
================================================================================
================================================================================
filter方法:
对于序列中的元素进行筛选,最终获取符合条件的序列,如:
获取列表中大于12的所有元素集合
li = [11, 22, 33]
new_list = filter(lambda arg: arg > 22, li)
#filter第一个参数为空,将获取原来序列,filter内部默认只取值为true的值
以取10以内的所有奇数为例:一行命令搞定
list(filter(lambda x : x % 2,range(10)))
[1,3,5,7,9]
===============================================================================
===============================================================================
===============================================================================
reduce方法:
对于序列内所有元素进行累计操作,如:
获取序列所有元素的和
li = [11, 22, 33,44,55,66,77,88,99]
result = reduce(lambda arg1, arg2: arg1 + arg2, li)
# reduce的第一个参数,函数必须要有两个参数
# reduce的第二个参数,要循环的序列
# reduce的第三个参数,初始值
 

猜你喜欢

转载自www.cnblogs.com/steven9898/p/11329366.html