Python教程

Python基础(五)——匿名函数

本文主要是介绍Python基础(五)——匿名函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Python基础(五)——匿名函数

  • 一.什么是匿名函数
  • 二.匿名函数的声明
  • 三.三目运算
  • 四.匿名函数使用方式
    • 4.1 lanbda与三目运算的结合使用
    • 4.2 给def函数中的lambda传参
    • 4.3 匿名函数传入def函数
  • 五.与匿名函数结合的常用函数
    • 5.1 map(function,sequence)
    • 5.2reduce(function,sequence)
    • 5.3sorted(iterable,key=None,reverse=False)
    • 5.4filter(function,sequence)

一.什么是匿名函数

顾名思义,没有名字。适用于简单的业务逻辑

二.匿名函数的声明

使用lambda声明

变量 = lambda 参数 : 逻辑代码

#调用
变量(参数)

三.三目运算

表达式1 if 条件 else 表达式2

如果条件成立,表达式1就作为整个表达式的结果,反之,表达式二为整个表达式的结果。

四.匿名函数使用方式

4.1 lanbda与三目运算的结合使用

compare = lanbda x,y :x if x>y else y

#调用
compare(8,9)

4.2 给def函数中的lambda传参

def 函数无参数

def main():
	return lambda x : True if x==10 else False

#传参
main()(10)

def 有参数

def main(num1,num2,num3):
	return lambda x : x+num1+num2+num3
#调用
total = main(10,20,30)(40)

4.3 匿名函数传入def函数

str_list = ['Python基础', 'Java基础', 'Python爬虫', 'Java Web', ]

def main(keys, func):
    result_list = []
    for result in keys:
        if func(result):
            result_list.append(result)
    return result_list

condition = lambda x: True if 'Python' in x else False
# 调用
print(main(str_list, condition))

五.与匿名函数结合的常用函数

5.1 map(function,sequence)

data = [1,2,3,4]
#def函数 +map
def func(n):
    return n+1  
print(list(map(func,data)))
#lambda + map
print(list(map(lambda n : n+1,data)))

  • 参数顺序:方法/表达式,可迭代对象
  • 对可迭代对象中每个数据进行函数规定的操作
  • 返回的结果是迭代器,用list转一下在调用
  • 函数为传统函数调用时不要加()

5.2reduce(function,sequence)

引入:from functools import reduce

from functools import reduce

data = [1, 2, 3, 4]
def func(x, y):
    return x + y
print(reduce(func,data))
print(reduce(lambda x, y: x + y, data))
  • 参数顺序:方法/表达式,可迭代对象
  • 每次取两个数进行运算,可迭代对象中数据越来越少

5.3sorted(iterable,key=None,reverse=False)

data = {'李彤':480, '苏丹':520,'王梅':340, '赵夏伟':555 }

print(sorted(data.items(), key=lambda d: d[1], reverse=True))
  • 对可迭代对象进行排序,不影响原数据
  • 返回的排序是列表嵌套元组,可用dict()转回字典
  • iterable:可迭代数据类型列表,字典
  • key:是否基于某一个元素排序
  • reverse:是否反转,默认false升序,反之降序
  • 如果基于的条件不是一个,key=lambda d: (d[0],d[1])

5.4filter(function,sequence)

data = [1, 2, 3, 4]
print(list(filter(lambda x : x>2,data)))
  • 参数顺序:方法/表达式,可迭代对象
  • 根据条件过滤
  • 函数返回类型需要为布尔
  • filter返回的结果为迭代器,转list调用
这篇关于Python基础(五)——匿名函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!