ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

18、lambda 表达式

2022-07-01 21:31:54  阅读:124  来源: 互联网

标签:return 18 list item select def print 表达式 lambda


将函数作为第一类对象

什么是第一类对象

将对象赋值给变量

number = 123
string = "hello"
list = [1, 2, 3]
dict = {'name': 'tom', 'age': 12}

将对象作为参数传递

print(123)
print("hello")
print([1, 2, 3])
print({'name': 'tom', 'age': 12})

将对象用作返回值

def return_number():
    return 123

def return_string():
    return "hello"

def return_list():
    return [1, 2, 3]    

def return_dict():    
    return {'name': 'tom', 'age': 12}

将函数作为第一类对象

可以将函数赋值给变量

def max(a, b):
    if a > b:
        return a
    else:
        return b

var = max
print('max = %d' % var(1, 2))

可以将函数作为参数传递

def func():
    print('Inside func')

def pass_func(data):   
    print('Inside pass_func')
    data()

pass_func(func)    

可以将函数作为返回值

def func():
    print('Inside func')

def return_func():   
    print('Inside return_func')
    return func

var = return_func() 
var()

将函数作为第一类对象的意义

将函数作为第一类对象,是一种重要的抽象机制,极大的提升了程序的灵活性。通过一个例子进行说明。假设需要完成这样的任务:

  1. 存在一个列表 [1, -1, 2, -2, 3, -3]
  2. 打印输出列表中的正数
  3. 打印输出列表中的负数

我们使用两种方法实现:

  1. 包含重复性代码的解决方法
  2. 将函数作为参数传递

包含重复性代码的解决方法

list = [1, -1, 2, -2, 3, -3]

def print_positive(list):
    for item in list:
        if item > 0:
            print(item)

def print_negative(list):
    for item in list:
        if item < 0:
            print(item)

print_positive(list)
print_negative(list)

将函数作为参数传递

list = [1, -1, 2, -2, 3, -3]

def select_positive(x):
    return x > 0

def select_negative(x):
    return x < 0

def select(list, select_function):
    for item in list:
        if select_function(item):
            print(item)

select(list, select_positive)
select(list, select_negative)

匿名函数 lambda

lambda 表达式的定义

在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。

lambda x: x > 0

该函数等价于函数 select_positive,如下所示:

def select_positive(x):
    return x > 0

使用 lambda 表达式重写程序

在前面的小节中,将函数作为参数,编写程序实现打印正数和负数。下面使用 lambda 表达式重写这个程序:

list = [1, -1, 2, -2, 3, -3]

def select(list, select_function):
    for item in list:
        if select_function(item):
            print(item)

select(list, lambda item: item > 0)
select(list, lambda item: item < 0)

map 函数

map 函数接收两个参数 function 和 list,function 是一个函数,list 是一个可以被遍历的序列,map 将传入的函数依次作用到序列的每个元素,并把结果作为新的序列返回。

list = [1, 2, 3]

list2 = map(lambda x: x * 2, list)
for item in list2:
    print(item)

list10 = map(lambda x: x + 10, list)
for item in list10:
    print(item)

参考资料

http://www.imooc.com/wiki/pythonlesson1/pythonlambda.html

标签:return,18,list,item,select,def,print,表达式,lambda
来源: https://www.cnblogs.com/tiansz/p/16436010.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有