lambda,map,filter

发布时间 2023-11-02 23:55:13作者: 乐池

1. Lambda

Lambda函数是一种匿名函数,它可以在一行内定义,并通常用于需要简单函数的地方。Lambda函数使用lambda关键字后跟参数列表和冒号,然后在冒号后面定义函数的主体。例如:

add = lambda x, y: x + y
print(add(2, 3))  # 输出5

Lambda函数通常用于传递给高阶函数(如map、filter和sorted等)或在需要短期使用的小函数的地方。但需要注意,它们通常不应该用于复杂的函数,因为可读性可能会受到影响。在这种情况下,通常更好的做法是定义一个常规的命名函数。

  • 例:map
>>> mapped = map(lambda x : ord(x)+10 , "FishC")
>>> list(mapped)
[80, 115, 125, 114, 77]
  • 例:filter
>>>list(filter(lambda x : x % 2 , range(10)))
[1, 3, 5, 7, 9]

2. map与filter

map(function, iterable, ...)
filter(function, iterable)
  • mapfunction是要应用于每个元素的函数。filterfunction是一个用于定义筛选条件的函数。这个函数应该返回一个布尔值,即 True 或 False,用于指示是否保留可迭代对象中的元素。
  • iterable是要迭代的可迭代对象,如列表、元组等

filter()和map()都是Python中的内置函数,用于处理可迭代对象,但它们的主要目的和用法不同。以下是它们之间的主要异同点:

相同点:

两者都可以接受一个函数和一个可迭代对象(如列表、元组等)作为参数。
两者都返回一个迭代器,其中包含经过函数处理的元素。

不同点:

map()函数的目的是将一个函数应用于可迭代对象中的每个元素,并返回一个包含所有结果的迭代器。它不会改变元素的数量,只是将每个元素映射到另一个值上。例如,你可以使用map()来将一个列表中的所有元素加倍,而结果将与原始列表具有相同的长度。

filter()函数的目的是从可迭代对象中筛选出满足特定条件的元素,并返回一个包含这些元素的迭代器。它可以减少可迭代对象的长度,因为只有满足条件的元素会被保留下来。例如,你可以使用filter()来从列表中筛选出所有的偶数,结果将是一个包含满足条件的元素的较短的迭代器。

总之,map()用于对可迭代对象的每个元素应用函数,而filter()用于筛选出可迭代对象中满足特定条件的元素。它们在处理数据时具有不同的目的和用途。