Python3-lamba表达式、zip函数

时间:2023-03-08 23:08:36
Python3-lamba表达式、zip函数

lambda表达式

Python3-lamba表达式、zip函数

学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即:

# 普通条件语句
if == :
name = 'name1'
else:
name = 'name2' # 三元运算
name = 'name1' if == else 'name2'

对于简单的函数,也存在一种简便的表示方式,即:lambda表达式

# 定义函数(普通方式)
def func(arg):
return arg + # 执行函数
result = func() # ###################### lambda ###################### # 定义函数(lambda表达式)
my_lambda = lambda arg : arg + # 执行函数
result = my_lambda()

lambda存在意义就是对简单函数的简洁表示

# cal2 = lambda n : n*n
# ret = cal2()
# print(ret) # def add(x, y): return x+y
# add2 = lambda x,y : x+y
# ret = add(, )
# print(ret)

上面是匿名函数的函数用法。除此之外,匿名函数也不是浪得虚名,它真的可以匿名。在和其他功能函数合作的时候

l=[,,,,,,,]
print(max(l)) Output: dic={'k1':,'k2':,'k3':}
print(max(dic))
print(dic[max(dic,key=lambda k:dic[k])]) Output:
k3
res = map(lambda x:x**,[,,,,])
for i in res:
print(i) 输出
res = filter(lambda x:x>,[,,,,])
for i in res:
print(i) 输出

面试题练一练

现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

t1 = (('a'),('b'))
t2 = (('c'),('d')) res = lambda t1,t2 : [{i,j}for i, j in zip(t1, t2)]
print(res(t1, t2))

知识补给:python3 zip函数

zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象(可以用list转换)。

如果各个迭代器的元素不一致则返回列表长度与最短对象相同,利用*号操作符,可以将元组解压为列表。

语法:zip([iterable,...])   --- 一个或多个迭代器, 返回元组列表

>>>a = [,,]
>>> b = [,,]
>>> c = [,,,,]
>>> zipped = zip(a,b) # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped) # list() 转换为列表
[(, ), (, ), (, )]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(, ), (, ), (, )] >>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[, , ]
>>> list(a2)
[, , ]

相关文章