欢迎访问宙启技术站
智能推送

如何使用Python中的map和filter函数

发布时间:2023-06-08 20:24:19

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代码,这是一个十分实用的工具。