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 教程。