Python 映射
Python 映射 教程介绍了 Python 内置的map()
函数。
Python map()
函数
Python map()
内置函数将给定函数应用于可迭代的每一项,并返回一个迭代器对象。
| map(function, iterable, ...)
|
可以将多个迭代传递给map()
函数。 该函数必须采用与可迭代项一样多的参数。
Python 映射示例
以下示例在整数列表上使用 Python map()
。
python_map.py
| #!/usr/bin/python3
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_squared = map(square, nums)
|
map()
功能将square()
功能应用于nums
列表的每个元素。
| for num in nums_squared:
print(num)
|
我们遍历返回的 iterable 并打印元素。
| $ ./python_map.py
1
4
9
16
25
|
这是输出。
等效的 Python 映射
以下示例显示了与 Python 3 map()
函数等效的自定义。
mymap_fun.py
| #!/usr/bin/python3
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()
做相同的事情。
带 lambda 的 Python 映射
下一个示例使用lambda
运算符在map()
内部创建一个匿名函数。
python_map_lambda.py
| #!/usr/bin/python3
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()
。
python_map_iterables.py
| #!/usr/bin/python3
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 映射多个函数
在下一个示例中,我们显示如何在 Python map()
中使用多个函数。
python_map_multiple_funcs.py
| #!/usr/bin/python3
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 列表推导式来实现。
python_list_comprehension.py
| #!/usr/bin/python3
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 列表推导式从整数列表创建平方值列表。