Python函数 - map和filter函数的使用方法及区别
Python是一门优秀的编程语言,拥有众多强大的函数库。其中就包括map和filter函数,这两个函数非常常用,可以用于对迭代对象进行处理,它们的作用和用法也很相似,但它们之间还是存在一些不同的地方,本篇文章将详细介绍它们的使用方法和区别。
一、map函数
1.1 map函数的作用
map()函数是 Python 内置的一个高阶函数,它接受两个参数,第一个参数是一个函数,第二个参数是一个序列,map()函数通过将序列中的每个元素依次传给函数来处理序列,并返回一个新的序列,序列中每个元素都是处理后的结果。
1.2 map函数的用法
map()函数的用法如下:
map(function, iterable, ...)
其中,第一个参数为函数,第二个参数为序列,... 表示可以有多个可迭代对象作为参数,依次传给 function 函数。函数 function 将每个可迭代对象中的元素依次传入,并返回处理后的结果组成一个新的可迭代对象。
下面是一个例子,使用 map() 函数将一个列表的所有元素平方:
>>> def square(x): ... return x**2 ... >>> a = [1, 2, 3, 4, 5] >>> b = map(square, a) >>> list(b) [1, 4, 9, 16, 25]
1.3 map函数的应用场景
map() 函数常用于对数据进行批量操作,并将结果保存在新的可迭代对象中。比如,将一个字符串列表中的所有元素转化为小写字母:
>>> a = ['Hello', 'World', 'Python'] >>> b = map(lambda x: x.lower(), a) >>> list(b) ['hello', 'world', 'python']
二、filter 函数
2.1 filter函数的作用
filter()函数也是 Python 内置的一个高阶函数,它接受两个参数,第一个参数是一个函数,第二个参数是一个序列,filter()函数通过将序列中的每个元素依次传给函数来判断序列中的元素是否符合条件,最终返回一个新的序列,序列中只包含符合条件的元素。
2.2 filter函数的用法
filter()函数的用法如下:
filter(function, iterable)
其中,第一个参数为函数,第二个参数为序列。函数 function 将序列中的每个元素依次传入,返回 True 或 False 表示该元素是否保留在最终的结果序列中。
下面是一个例子,使用 filter() 函数取出一个列表中的所有偶数:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8] >>> b = filter(lambda x: x%2 == 0, a) >>> list(b) [2, 4, 6, 8]
2.3 filter函数的应用场景
filter() 函数常用于过滤数据。比如,从一个字符串列表中取出所有长度大于 5 的字符串:
>>> a = ['Hello', 'World', 'Python', 'Function', 'Master'] >>> b = filter(lambda x: len(x) > 5, a) >>> list(b) ['Python', 'Function', 'Master']
三、map和filter的区别
map() 函数和 filter() 函数都是对序列中的元素进行操作,他们的区别在于:
- map() 函数会返回一个新的序列,其中每个元素都是通过传入的函数进行处理后得到的;
- filter() 函数会返回一个新的序列,其中只有符合条件的元素参与组成;
简单说就是,map() 函数是通过处理每个元素来得到新的序列,而 filter() 函数是通过筛选符合条件的元素来得到新的序列。
四、结语
map() 函数和 filter() 函数是 Python 中非常常用的函数,它们能够大大简化对序列中元素的处理。使用它们可以提高代码效率,同时也可以让代码更加简洁、易读。希望本文对大家了解 map() 函数和 filter() 函数有所帮助!
