Python中的map()和filter()函数:如何执行元素一一映射和过滤操作;
Python编程语言中的map()和filter()函数,是两种用于对列表、元组和其他可迭代对象进行操作的函数。本文将为您介绍这两个函数的使用方法以及它们分别如何实现元素一一映射和过滤操作。
一、map()函数
map()函数可以将一个函数应用到一个可迭代对象中的每个元素上,并返回一个新的可迭代对象,其中包含了应用函数后得到的结果。函数的基本语法如下:
map(function, iterable)
其中,function是应用到每个元素上的函数,iterable是一个或多个可迭代的对象。该函数返回一个迭代器对象,可以使用list()函数将其转换为列表。
示例代码1:
def square(a):
return a*a
lst1 = [1, 2, 3, 4, 5]
lst2 = map(square, lst1)
print(list(lst2))
上述代码中,我们定义了一个名为square()的函数,该函数将函数输入的参数a平方并返回结果。我们使用map()函数将这个函数应用于列表lst1中的每个元素,然后将新的迭代器对象转换为列表lst2。输出的结果是[1, 4, 9, 16, 25],即平方结果的列表。
示例代码2:
lst1 = [1, 2, 3, 4, 5] lst2 = [10, 20, 30, 40, 50] lst3 = map(lambda x, y: x+y, lst1, lst2) print(list(lst3))
在这个示例代码中,我们将一个lambda函数应用于两个列表lst1和lst2中的相应元素。lambda函数将两个参数相加并返回结果。我们使用map()函数将该lambda函数应用于lst1和lst2中的元素,然后将结果转换为列表lst3。输出的结果是[11, 22, 33, 44, 55],即相应元素之和的列表。
二、filter()函数
技能运用filter()函数可以通过过滤可迭代对象中的元素来创建一个新的可迭代对象,新对象中仅包含满足特定条件的元素。函数的基本语法如下:
filter(function, iterable)
其中,function是应用于可迭代对象中每个元素的函数,iterable是一个或多个可迭代的对象。该函数返回一个迭代器对象,可以使用list()函数将其转换为列表。
示例代码3:
def is_even(a):
if a%2 == 0:
return True
else:
return False
lst1 = [1, 2, 3, 4, 5]
lst2 = filter(is_even, lst1)
print(list(lst2))
在这个示例代码中,我们定义了一个名为is_even()的函数,该函数返回True,当输入的参数为偶数时,否则返回False。我们使用filter()函数将该函数应用于列表lst1中的每个元素,然后将结果转换为新的迭代器对象lst2,其中包含了所有满足条件的元素。输出的结果是[2, 4],即列表中的偶数。
示例代码4:
lst1 = [1, 2, 3, 4, 5] lst2 = ['a', 'b', 'c', 'd', 'e'] lst3 = filter(lambda x, y: x>y, lst1, lst2) print(list(lst3))
在这个示例代码中,我们使用lambda函数将两个列表lst1和lst2中的相应元素进行比较,并返回结果大于的元素。我们使用filter()函数将该lambda函数应用于lst1和lst2中的元素,并将结果转换为列表lst3。输出的结果是['b', 'c', 'd', 'e'],即lst1中大于相应元素的lst2中的元素。
总结
map()和filter()函数都是Python编程语言中用于对可迭代对象进行操作的函数。map()函数的作用是将一个函数应用于可迭代对象中的每个元素,并返回一个新的可迭代对象,其中包含了应用函数后得到的结果。filter()函数的作用是通过过滤可迭代对象中的元素来创建一个新的可迭代对象,新对象中仅包含满足特定条件的元素。这两种函数是在Python编程中经常使用的函数,可以帮助程序员实现元素一一映射和过滤操作。
