如何使用Python中的map和filter函数
Python map() and filter()函数是内置的函数,这两个函数可以用于对一些数据进行映射和筛选。这可以使你更快地编写Python代码,还能更有效地编写代码。以下是如何使用Python map和filter函数的详细说明。
使用Python map函数
Python map函数基本语法如下:
map(function, iterable [, iterable2, iterable3,...iterableN])
函数注解:
- function -- 映射函数。
- iterable -- 序列或可迭代对象。
- iterable2, iterable3,...iterableN -- 可选参数,可以传入多个序列或可迭代对象。
map函数对序列中的数据进行一一映射计算,然后返回一个新的序列。映射函数可以是自定义函数,也可以是系统自带的函数。例如,将一个字符串中的每一个字符都转化为它的Unicode编码的整数:
def unicode(s):
return ord(s)
mylist = ['a', 'b', 'c', 'd']
result = map(unicode, mylist)
print(result)
输出结果如下:
[97, 98, 99, 100]
在这个例子中,我们定义了一个unicode函数,使用Python map函数将每一个字符都转化为Unicode编码。这个函数将被传递到map函数中去,执行映射操作。
另一个例子是使用Python map函数对两个列表中的元素进行对应映射计算,生成一个新的列表。例如,将两个列表中的元素两两相加:
def add(x, y):
return x + y
list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
result = map(add, list1, list2)
print(list(result))
输出结果如下:
[6, 8, 10, 12]
在这个例子中,我们定义了一个add函数,使用Python map函数对输入的序列进行元素级别映射操作。两个列表list1和list2中的相同位置的元素将被传递到add函数中,然后执行相加操作。我们通过list()将Python的迭代器对象转换为列表。
可见,使用Python map函数可以轻松地对序列中的元素进行映射计算操作,使代码更易维护和更容易理解。
使用Python filter函数
Python filter函数基本语法如下:
filter(function, iterable)
函数注解:
- function -- 判断函数。
- iterable -- 序列或可迭代对象。
Python filter函数用于对序列中的元素进行筛选操作,返回一个新序列,新序列中的元素是所有筛选后返回True的元素。函数function接受一个参数,返回True或False,filter函数会依次将可迭代的元素传递给function,返回值为True的元素被留下。例如,筛选一个列表中的奇数:
def is_odd(x):
return x % 2 == 1
mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(is_odd, mylist)
print(list(result))
输出结果如下:
[1, 3, 5, 7, 9]
在这个例子中,我们定义了一个is_odd函数,该函数返回输入的数是否为奇数。我们将此函数传递给Python的filter函数中,对输入的序列进行筛选操作。过滤器将逐个传递列表中的元素到is_odd函数,只有返回True的元素才会留下。list()函数将迭代器对象转换为列表,并将结果打印出来。
另一个例子是使用Python filter函数将一个列表中的所有None和空字符串过滤掉:
def filter_none(s):
return s != None and s != ''
mylist = [None, 'a', '', 'b', None, 'c', 'd', '']
result = filter(filter_none, mylist)
print(list(result))
输出结果如下:
['a', 'b', 'c', 'd']
在这个例子中,我们定义了一个filter_none函数,该函数用于判断输入的字符串是否为None或空字符串。我们将此函数传递给Python的filter函数中,对输入的序列进行筛选操作。过滤器将逐个传递列表中的元素到filter_none函数,只有返回True的元素才会留下。
可见,使用Python filter函数可以轻松地对序列中的元素进行筛选操作,筛选结果可以用于输入到下一级的计算过程中,同时也能使代码更易维护和更容易理解。
总结
Python map和filter函数是较为常用的Python内置函数,用于映射和筛选操作。使用map可以轻松地对序列中的元素进行映射计算操作;使用filter可以轻松地对序列中的元素进行筛选操作。Python map和filter函数可以让我们写出更高效的Python代码,这是一个十分实用的工具。
