Python map及filter函数使用方法解析

1. Python map函数

Python中的map函数可以将一个函数映射到一个iterable对象上,返回一个新的可迭代对象,该对象包含了将原始iterable对象的每个元素传递给函数后的结果。

1.1 基本使用方法

基本用法是将一个函数和一个iterable对象作为参数传递给map函数:

def square(x):

return x ** 2

lst = [1, 2, 3, 4, 5]

squared = map(square, lst)

上述代码将一个名为square的函数和一个列表作为参数传递给map函数,得到了一个新的可迭代对象squared,该对象包含了将lst中的每个元素传递给square函数后的结果。可以使用list函数将该对象转换为列表来查看结果:

print(list(squared)) #[1, 4, 9, 16, 25]

在上述代码中,我们使用了list函数将map函数返回的可迭代对象转换为列表。

1.2 使用lambda函数

lambda函数可以用于定义简单的函数,通常只包含一个表达式。lambda函数的语法如下:

lambda 参数列表: 表达式

可以将lambda函数和map函数一起使用:

lst = [1, 2, 3, 4, 5]

squared = map(lambda x: x ** 2, lst)

print(list(squared)) #[1, 4, 9, 16, 25]

在上述代码中,我们使用了lambda函数代替了之前定义的square函数。

2. Python filter函数

Python中的filter函数用于过滤一个sequence(通常是一个列表)中的元素,根据指定的函数返回True或False。如果函数返回True,则元素会被保留,否则将被过滤掉。

2.1 基本使用方法

最基本的使用方法是将一个函数和一个sequence对象作为参数传递给filter函数:

def is_even(x):

return x % 2 == 0

lst = [1, 2, 3, 4, 5]

even = filter(is_even, lst)

print(list(even)) #[2, 4]

在上述代码中,我们定义了一个函数is_even,该函数返回True如果其参数为偶数,否则返回False。然后我们使用filter函数将该函数和一个列表作为参数传递给filter函数,得到了一个新的可迭代对象even,该对象只包含lst中的偶数元素。

2.2 使用lambda函数

与map函数一样,我们也可以使用lambda函数来代替之前定义的函数。例如,我们可以使用lambda函数找到列表中的所有奇数元素:

lst = [1, 2, 3, 4, 5]

odd = filter(lambda x: x % 2 == 1, lst)

print(list(odd)) #[1, 3, 5]

在上述代码中,我们使用了lambda函数代替了之前定义的is_even函数。

3. map和filter的组合使用

map和filter函数可以很容易地组合使用,以便在一个操作中对一个列表进行转换和筛选。例如,下面的代码将一个列表的所有偶数元素平方后返回:

lst = [1, 2, 3, 4, 5]

squared_even = map(lambda x: x ** 2, filter(lambda x: x % 2 == 0, lst))

print(list(squared_even)) #[4, 16]

在上述代码中,我们首先使用filter函数找到lst的所有偶数元素,然后使用map函数将这些元素平方。最终得到了一个新的可迭代对象squared_even,该对象只包含了lst的偶数元素的平方。

4. 总结

Python中的map和filter函数可以很方便地对列表进行转换和筛选。map函数将一个函数映射到一个iterable对象上,返回一个新的可迭代对象,该对象包含了将原始iterable对象的每个元素传递给函数后的结果。filter函数用于过滤一个sequence中的元素,根据指定的函数返回True或False。如果函数返回True,则元素会被保留,否则将被过滤掉。map和filter函数可以很容易地组合使用,以便在一个操作中对一个列表进行转换和筛选。

后端开发标签