Python map
最后修改于 2024 年 1 月 29 日
Python map 教程介绍了 Python 内置的 map
函数。
Python map() 函数
Python 的 map
内置函数将给定的函数应用于可迭代对象(多个)的每个项,并返回一个迭代器对象。
map(function, iterable, ...)
可以将多个可迭代对象传递给 map
函数。该函数必须接受与可迭代对象数量相同的参数。
Python map 示例
下面的示例在整数列表上使用了 Python map
。
#!/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)
我们定义一个整数列表,并使用 map
将 square
函数应用于列表的每个元素。
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
函数的一个自定义等效实现。
#!/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
中创建匿名函数。
#!/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
。
#!/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
中使用多个函数。
#!/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)
在示例中,我们将 add
和 square
函数应用于整数值列表。
for i in nums: vals = list(map(lambda x: x(i), (add, square))) print(vals)
我们在 for 循环中遍历元素。在每个循环中,我们创建一个包含两个值的列表,这两个值是通过将 add
和 square
函数应用于该值来计算的。
$ ./python_map_multiple_funcs.py [2, 1] [4, 4] [6, 9] [8, 16] [10, 25]
第一个值是通过加法形成的,第二个值是通过乘法形成的。
Python 列表推导式
Python map
的功能也可以通过 Python 列表推导式来实现。
#!/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 map
函数。
作者
列出所有 Python 教程。