关于zip、map、filter和lambda函数

zip

# 相当于是拉链,将两个列表对应位置的数据拉到一起,变成元组,最后返回一个迭代器。用list将迭代器转换为列表即可看到内容
# 如果列表数据长度不对等,就以短的为主,剩下的不管了

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c', 'd']
z = zip(list1, list2)
print(list(z))  # >>>> 输出: [(1, 'a'), (2, 'b'), (3, 'c')]

for x,y in list(z):
  print(x)  # >>>> 每次循环打印出来的x分别就是1,2,3
  print(y)  # >>>> 每次循环打印出来的y分别就是a, b, c

map

# 相当于是映射,多与lambda合作,告诉lambda函数应该作用于哪里

numbers = [1, 2, 3, 4, 5]
doubled = map(lambda x: x * 2, numbers)  # 意思是,定义了一个lambda函数,而map(匿名函数式,numbers),就是用来给匿名函数传参
print(list(doubled))  # >>> 输出: [2, 4, 6, 8, 10]

filter

# 只用来筛选布尔值为【真】的结果,结构是filter(函数,传入给函数的参数)————结果是迭代器

numbers = [1, 2, 3, 4, 5]  
even_numbers = filter(lambda x: x % 2 == 0, numbers)  # 同样在 filter 中使用 lambda  
print(list(even_numbers))  # 输出: [2, 4]

lambda函数

# 1. 如果有变量储存匿名函数,则匿名函数可以有返回值


square = lambda x: x ** 2  # >>>>  定义一个 lambda 函数,它接收一个参数 x 并返回 x 的平方  
  
result = square(5)  # >>>> 调用这个 lambda 函数,并打印返回值  
print(result)  # >> 输出:25

# 2. 如果没有,匿名函数通常就会与其他函数合作,返回值的内容和类型则由另一个函数的性质决定了,比如如果是和filter合作,返回的内容都是布尔值,和map合作,返回来的就是列表了。 >>> 这里我说的是list之后,毕竟map和filter都是返回迭代器
posted @ 2024-06-20 16:31  abloger  阅读(25)  评论(0)    收藏  举报