ZetCode

Python map

最后修改于 2024 年 1 月 29 日

Python map 教程介绍了 Python 内置的 map 函数。

Python map() 函数

Python 的 map 内置函数将给定的函数应用于可迭代对象(多个)的每个项,并返回一个迭代器对象。

map(function, iterable, ...)

可以将多个可迭代对象传递给 map 函数。该函数必须接受与可迭代对象数量相同的参数。

Python map 示例

下面的示例在整数列表上使用了 Python map

python_map.py
#!/usr/bin/python

def square(x):

    return x * x

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

nums_squared = map(square, nums)

for num in nums_squared:

    print(num)

我们定义一个整数列表,并使用 mapsquare 函数应用于列表的每个元素。

def square(x):

    return x * x

square 函数对其参数进行平方。

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

我们定义一个整数列表。

nums_squared = map(square, nums)

map 函数将 square 函数应用于 nums 列表的每个元素。

for num in nums_squared:

    print(num)

我们循环遍历返回的迭代器并打印元素。

$ ./python_map.py
1
4
9
16
25

Python map 等效实现

下面的示例展示了 Python 3 map 函数的一个自定义等效实现。

mymap_fun.py
#!/usr/bin/python

def square(x):

    return x * x

def mymap(func, iterable):

    for i in iterable:
        yield func(i)

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

nums_squared = mymap(square, nums)

for num in nums_squared:

    print(num)

mymap 的功能与 Python 3 map 相同。

Python map 与 lambda

下一个示例使用 lambda 运算符在 map 中创建匿名函数。

python_map_lambda.py
#!/usr/bin/python

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

nums_squared = map(lambda x: x*x, nums)

for num in nums_squared:
    print(num)

代码示例使用 map 和用 lambda 创建的匿名函数对列表元素进行平方。

Python map 与多个可迭代对象

我们之前已经提到,可以将多个可迭代对象传递给 map

python_map_iterables.py
#!/usr/bin/python

def multiply(x, y):

    return x * y

nums1 = [1, 2, 3, 4, 5]
nums2 = [6, 7, 8, 9, 10]

mult = map(multiply, nums1, nums2)

for num in mult:
    print(num)

在代码示例中,有两个包含整数的可迭代对象。将两个可迭代对象的值相乘。

def multiply(x, y):

    return x * y

由于传递给 map 的可迭代对象有两个,因此该函数必须接受两个参数。

$ ./python_map_iterables.py
6
14
24
36
50

Python map 多个函数

在下一个示例中,我们展示了如何在 Python map 中使用多个函数。

python_map_multiple_funcs.py
#!/usr/bin/python

def add(x):
    return x + x

def square(x):
    return x * x

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

for i in nums:

    vals = list(map(lambda x: x(i), (add, square)))

    print(vals)

在示例中,我们将 addsquare 函数应用于整数值列表。

for i in nums:

    vals = list(map(lambda x: x(i), (add, square)))

    print(vals)

我们在 for 循环中遍历元素。在每个循环中,我们创建一个包含两个值的列表,这两个值是通过将 addsquare 函数应用于该值来计算的。

$ ./python_map_multiple_funcs.py
[2, 1]
[4, 4]
[6, 9]
[8, 16]
[10, 25]

第一个值是通过加法形成的,第二个值是通过乘法形成的。

Python 列表推导式

Python map 的功能也可以通过 Python 列表推导式来实现。

python_list_comprehension.py
#!/usr/bin/python

def square(x):

    return x * x

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

nums_squared = [square(num) for num in nums]

for num in nums_squared:

    print(num)

该示例使用 Python 列表推导式从整数列表中创建平方值列表。

来源

Python 语言参考

在本文中,我们学习了 Python map 函数。

作者

我的名字是 Jan Bodnar,我是一位充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出所有 Python 教程