匿名函数4(实战)

2020-12-28  本文已影响0人  闲云野鹤_23dd

匿名函数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))
上一篇 下一篇

猜你喜欢

热点阅读