#Reference:https://blog.csdn.net/program_developer/article/details/82024468
#Reference:Python程序设计基础(第2版)
#lambda效率不及operator
#冒号前是输入参数,冒号后是返回值
add = lambda x,y:x**y
print(add(2,5))
g = lambda x, y=2, z=6:x*y+z
print(g(10))
#wrong example
r = []
x = 1
for x in range(10):
r.append(lambda :x**2)
print(r[1]())#不加括号将返回迭代器对象
#Answer: Wa
#81
#Accepted example
r = []
x = 1
for x in range(10):
r.append(lambda n = x:n**2)
print(r[5]())#不加括号将返回迭代器对象
#Answer:
#25
f = lambda :i
i = 3
print(f())
i = 5
print(f())
#Answer:
#3
#5
#lambda在filter中的调用
def is_odd(n):
return n % 2 == 1
newlist = filter(is_odd,[1,2,3,4,5,6,7,8,9,10])
print(newlist)#返回迭代器对象
#<filter object at 0x00000276A34FBEB8>
print(list(newlist))#返回列表
#[1, 3, 5, 7, 9]
newlist = list(filter(lambda n : n % 2 == 1,[1,2,3,4,5,6,7,8,9,10]))
print(newlist)
#[1, 3, 5, 7, 9]
newlist = (filter(lambda n : n % 2 == 1,[1,2,3,4,5,6,7,8,9,10]))
print(newlist)
#<filter object at 0x0000019C0771BEB8>
#lambda在sort中的调用
data = [1,2,3,4,5,6,7,8,9,10,5,4,2]
data.sort(key = lambda x:-x)#用于sort中的参数传递,感觉类似于C++ sort cmp编写
print(data)
#[10, 9, 8, 7, 6, 5, 5, 4, 4, 3, 2, 2, 1]
data.sort(key = lambda x: len(str(x)))#按照字符串长度排序
print(data)
#[9, 8, 7, 6, 5, 5, 4, 4, 3, 2, 2, 1, 10]
data.sort(key = lambda x: len(str(x)), reverse=True)
print(data)
#[10, 9, 8, 7, 6, 5, 5, 4, 4, 3, 2, 2, 1]
data = [1,2,3,4,5,6,7,8,9,10,5,4,2]
data.sort(key = lambda x: len(str(x)), reverse=True)#与上一条测试对比,可证明sort排序是稳定的
print(data)
#[10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 4, 2]
#lambda在map映射中的使用
def squp(x):
return x * x
newlist = list(map(squp, [1,2,3,4,5]))
print(newlist)
#[1, 4, 9, 16, 25]
newlist = list(map(lambda x:x**2,[1,2,3,4,5]))
print(newlist)
#[1, 4, 9, 16, 25]
Python 基本数据类型基础实战【Lambda】
最新推荐文章于 2023-04-05 17:19:48 发布