Python map()函数--有例子的解释

130 阅读3分钟

尽管Python主要是一种面向对象的编程语言,但它提供了许多函数式编程工具。而最值得注意的是map()函数。

在这篇文章中,我们将探讨什么是map() 函数以及如何在你的代码中使用它。

Python中的map()函数

map() 函数 (它是 Python 中的一个内置函数) 被用来对一个迭代器(像 Python 的 list 或 dictionary) 中的每个项目应用一个函数。它返回一个新的迭代器 (一个map 对象),你可以在你代码的其他部分使用。

这方面的一般语法是:

map(function, iterable, [iterable1, iterable2, ...])

让我们看一个例子:假设你有一个数字列表,你想用第一个列表中的数字的立方体创建一个新的列表。传统的方法是使用for循环:

org_list = [1, 2, 3, 4, 5]
fin_list = []

for num in org_list:
    fin_list.append(num**3)

print(fin_list) # [1, 8, 27, 64, 125]

这是完全有效的,但让我们看看使用map() 函数如何简化你的代码:

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

# define a function that returns the cube of `num`
def cube(num):
    return num**3
   
fin_list = list(map(cube, org_list))
print(fin_list) # [1, 8, 27, 64, 125]

不知道你怎么想的,但我觉得这样的逻辑更简洁:

如果你想知道幕后发生了什么,map() 函数本质上是遍历了迭代器(在我们的例子中,org_list )的每个元素,并对其应用立方体函数。最后,它将结果返回给一个新的可迭代对象(fin_list )。

如何在 Python 中使用 Lambda 表达式

我们不用写一个单独的函数来计算一个数字的立方体,而是用一个lambda 表达式来代替它。下面是你如何做到这一点的:

fin_list = list(map(lambda x:x**3, org_list))
print(fin_list) # [1, 8, 27, 64, 125]

干净多了,你同意吗?

如何在 Python 中使用内置函数

你也可以传入 Python 的内置函数。例如,如果你有一个字符串的列表,你可以很容易地用列表中每个字符串的长度创建一个新列表:

org_list = ["Hello", "world", "freecodecamp"]
fin_list = list(map(len, org_list))
print(fin_list) # [5, 5, 12]

如何在 Python 中使用带有多个遍历变量的函数

到目前为止,我们已经传入了map() 只接受一个参数的函数 (记得cube(num))。但是如果你的函数接收了多个参数呢?这方面的一个例子是pow(x, y) 函数,它接收了两个参数 (它返回 x^y 的结果)。

要应用一个有多个参数的函数,只需在第一个参数之后传入另一个可迭代的名字:

base = [1, 2, 3, 4]
power = [1, 2, 3, 4]

result = list(map(pow, base, power))
print(result) # [1, 4, 27, 256]

总结

在这篇文章中,你已经学会了如何在 Python 中使用map() 函数。你还看到了它是如何极大地减少你的代码的大小,使其更易读和无错误。

现在你应该能够自如地使用map() ,使用内置函数、lambda表达式,甚至是你自己的自定义函数了