Python中的lambda函数常用技巧(附简单习题)

Lambda函数原理

在Python中,lambda函数是一个匿名函数,它可以快速定义一个简单的函数。与普通的def函数不同,lambda函数没有函数名,并且通常用来简短地表示一些小的操作。

基本语法:

lambda 参数: 表达式
  • 参数:可以有多个参数,也可以没有。
  • 表达式:函数体,返回的是该表达式的计算结果。

示例:

  1. 一个简单的lambda函数:

    f = lambda x: x + 2
    print(f(3))  # 输出 5
    
  2. lambda函数可以接受多个参数:

    add = lambda x, y: x + y
    print(add(3, 5))  # 输出 8
    
  3. 作为排序的key函数:

    lst = [(1, 2), (3, 1), (5, 0)]
    lst.sort(key=lambda x: x[1])  # 按第二个元素排序
    print(lst)  # 输出 [(5, 0), (3, 1), (1, 2)]
    

Lambda函数常见用途:

  1. 排序:我们可以通过lambda函数快速定义排序规则。

    intervals.sort(key=lambda x: x[0])
    

    上面的代码是用lambda函数对intervals按每个区间的第一个元素进行排序。

  2. 过滤:通过filter()函数配合lambda,可以快速过滤符合条件的元素。

    numbers = [1, 2, 3, 4, 5]
    result = filter(lambda x: x % 2 == 0, numbers)
    print(list(result))  # 输出 [2, 4]
    
  3. 映射map()函数与lambda配合使用,可以对列表中的每个元素应用一个转换函数。

    numbers = [1, 2, 3, 4]
    result = map(lambda x: x ** 2, numbers)
    print(list(result))  # 输出 [1, 4, 9, 16]
    

练习题

  1. 问题 1:写一个lambda函数,返回一个数的平方。然后使用该函数打印5的平方。

  2. 问题 2:给定一个字符串列表,使用lambdasorted函数按字符串的长度排序列表。

    words = ["apple", "banana", "cherry", "date"]
    
  3. 问题 3:给定一个数字列表,使用lambdafilter函数过滤出所有偶数。

    numbers = [1, 2, 3, 4, 5, 6, 7, 8]
    
  4. 问题 4:用maplambda函数将一个数字列表中的所有数字都转换为其两倍的值。

    numbers = [1, 2, 3, 4]
    
  5. 问题 5:给定一个列表,按照每个元素的最后一个字符对列表进行排序。

    words = ["apple", "banana", "cherry", "date"]
    

参考答案

# 1-写一个lambda函数,返回一个数的平方。然后使用该函数打印5的平方
f = lambda x:x**2
print(f(5))

# 2-给定一个字符串列表,使用lambda和sort函数按字符串的长度排序列表
words = ['apple', 'banana', 'cherry', 'date', 'elderberry']
words.sort(key=lambda word:len(word))
print(words)

# 3-给定一个整数列表,使用lambda和filter函数过滤出所有偶数
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_nums = filter(lambda x:x % 2 == 0, nums)
print(list(even_nums))

# 4-用map和lambda函数将一个数字列表中的所有数字都转换为其两倍的值
nums = [1, 2, 3, 4]
nums_sq = map(lambda x:x**2, nums)
print(list(nums_sq))

# 5-给定一个列表,按照每个元素的最后一个字符对列表进行排序
words = ['apple', 'banana', 'cherry', 'date', 'elderberry']
words.sort(key=lambda word:word[-1])
print(words)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wαyne_127

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值