Python 知识点

本文深入浅出地介绍了lambda表达式的概念及其应用场景,并通过具体的代码示例展示了如何利用lambda表达式来简化编程工作,同时探讨了lambda表达式在排序、过滤等功能中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lambda 表达式


来自知乎用户

  • “简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。”

  • “刻画了映射关系。却无需为其起名字。岂不妙哉。”

//可以随心所欲改变所需要的函数f中的映射关系啦
def operate(f, y):
    return f(y)

print (operate(lambda x : x ** 2, 4)) # prints '16'
print (operate(lambda x : x ** 3, 4)) # prints '64'

//也可以方便快捷的定义一个变量square_plus_cube,这个变量就可以执行一个函数映射啦
square_plus_cube = lambda x,y : x ** 2 + y ** 3
print (square_plus_cube(4,4)) # prints ’80’

//当然了,最经典的用处就是在sorted, filter, reduced等需要lambda作为参数的时候使用咯
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]

print (list(filter(lambda x: x % 3 == 0, foo)))  #[18, 9, 24, 12, 27]

print (list(map(lambda x: x * 2 + 10, foo)))  #[14, 46, 28, 54, 44, 58, 26, 34, 64]


foo = [2, -18, 9, 22, 17, 24, 8, 12, 27]
sorted(foo, key=lambda f:abs(f))

Copy(复制) or Reference(参考引用)


arr1 = [2, 3, 5, 7]
arr2 = arr1
arr2[2] = 13
print (arr1[2])  # 13

arr3 = arr1[0:3]
arr3[0] = 17
print (arr1[0])  #2
  • 如上所示,在第二行中,arr2指向了和arr1相同的object,所以在更改arr2的同时,arr1也发生了改变。

  • 但是,当我们使用slicing operator的时候,arr3仅仅是arr1的一个copy,所以arr3的改变并不会影响arr1,因为它们两个分别指向不同的objects

def func(arr):
    arr.append(2)
my_arr = [1, 2, 3]
print (len(my_arr))  # 3

func(my_arr)
print (len(my_arr))  # 4
  • 在函数func中,通过形参将reference传递,所以最后在函数执行完,变量my_arr在最后添加了数值2

dict1 = {'apples': 3, 'oranges': 2}
dict2 = dict1
dict2['bananas'] = 5
if 'bananas' in dict1:
    print ('bananas is there!')  # bananas is there!
else:
    print ('no bananas')
  • dictionary也与之前是一样的,使用dict2 = dict1操作会将两个变量指向同意object

x = 'hello'
y=x
y = 'hi' 
print (x)  # hello

a = 1
b = a
b = 2
print (a)  # 1

f = (1, 2, 3)
g = f
g = (4, 5, 6)
print(f)  # (1, 2, 3)

然而,诸如上述三种StringIntsTuples,他们都是Immutable(不可改变的),所以,在进行赋值操作的时候,只会进行复制,而不会引用到相同的object上面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值