匿名函数4(实战)
reduce
reduce() 函数会对参数序列中元素进行累积。
将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
语法:
reduce(function, 列表/元组等可迭代对象)
例子:
from functools import reduce
v1 = ['wo','hao','e']
v2 = [1,2,3]
def func(x,y):
return x+y
def redus_demo():
r1 = reduce(func, v1)
print(r1) # wohaoe
r2 = reduce(lambda x,y:x+y,v1)
print(r2) # wohaoe
def redus_demo2():
r3 = reduce(lambda x, y: x + y, v2)
print(r3)
r4 = reduce(lambda x, y: x * y, v2)
print(r4)`
def redus_demo3():
# 计算0到100的和
print( reduce(lambda x, y: x + y, range(101)) )`
filter
按条件过滤,将元素在方法中执行,返回结果为True的保留下来。
返回的结果是 filter 对象, 可以使用list函数转换成list对象
语法:
filter(function, 数据)
例子:
def f1():
# 求大于2的元素
result=filter(lambda x:x > 2,[1,2,3,4])
print(type(result))
print(list(result))
求列表中的数字
v3 = [11,22,33,'asd',44,'xf']
def fun1(i):
if type(i) == int:
return True
return False
def f2():
result = filter(fun1, v3)
print(list(result)) # [11,22,33,44]
# 简化做法
result = filter(lambda x: True if type(x) == int else False, v3)
print(list(result))`
求列表中的 偶数
def f3():
result = filter(lambda x: True if type(x) == int and x%2==0 else False, v3)
print(list(result))`
更简单的写法
def f4():
# 求列表中的数字
print(list( filter(lambda x: type(x) == int, v3) ))
#求列表中的 偶数
print(list( filter(lambda x: type(x) == int and x%2==0, v3) ))`
字典过滤
def f5():
salaries = {
'egon': 3000,
'alex': 100000000,
'wupeiqi': 10000,
'yuanhao': 2000
}
## 大于10000的键值对
res = filter(lambda k: salaries[k] >= 10000, salaries)
print(list(res))
info = [
{'name': 'egon', 'age': '18', 'salary': '3000'},
{'name': 'wxx', 'age': '28', 'salary': '1000'},
{'name': 'lxx', 'age': '38', 'salary': '2000'}
]
## 工资大于1000 的字典
res2 = filter(lambda x: int(x['salary'])>1000,info)
print(list(res2))






网友评论