多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Python 映射 > 原文: [http://zetcode.com/python/map/](http://zetcode.com/python/map/) Python 映射教程介绍了 Python 内置的`map()`函数。 ## Python `map()`函数 Python `map()`内置函数将给定函数应用于可迭代的每一项,并返回一个迭代器对象。 ```py map(function, iterable, ...) ``` 可以将多个迭代传递给`map()`函数。 该函数必须采用与可迭代项一样多的参数。 ## Python 映射示例 以下示例在整数列表上使用 Python `map()`。 `python_map.py` ```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()`函数。 ```py def square(x): return x * x ``` `square()`函数平方其参数。 ```py nums = [1, 2, 3, 4, 5] ``` 我们定义一个整数列表。 ```py nums_squared = map(square, nums) ``` `map()`函数将`square()`函数应用于`nums`列表的每个元素。 ```py for num in nums_squared: print(num) ``` 我们遍历返回的`iterable`并打印元素。 ```py $ ./python_map.py 1 4 9 16 25 ``` 这是输出。 ## 等效的 Python 映射 以下示例显示了与 Python 3 `map()`函数等效的自定义。 `mymap_fun.py` ```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` ```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` ```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) ``` 在代码示例中,有两个持有整数的可迭代对象。 来自两个可迭代对象的值相乘。 ```py def multiply(x, y): return x * y ``` 该函数必须带有两个参数,因为有两个可迭代变量传递给`map()`。 ```py $ ./python_map_iterables.py 6 14 24 36 50 ``` 这是输出。 ## Python 映射多个函数 在下一个示例中,我们显示如何在 Python `map()`中使用多个函数。 `python_map_multiple_funcs.py` ```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()`函数应用于整数值列表。 ```py for i in nums: vals = list(map(lambda x: x(i), (add, square))) print(vals) ``` 我们遍历`for`循环中的元素。 在每个循环中,我们创建两个值的列表,这些值是通过对值应用`add()`和`square()`函数来计算的。 ```py $ ./python_map_multiple_funcs.py [2, 1] [4, 4] [6, 9] [8, 16] [10, 25] ``` 第一个值通过加法形成,第二个值通过乘法形成。 ## Python 列表推导式 Python `map()`的功能也可以通过 Python 列表推导式来实现。 `python_list_comprehension.py` ```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 列表推导式从整数列表创建平方值列表。 在本教程中,我们使用了 Python `map()`函数。 您可能也会对以下相关教程感兴趣: [Python 教程](/lang/python/), [Python 集教程](/python/set/), [Python 列表推导](/articles/pythonlistcomprehensions/), [OpenPyXL 教程](/articles/openpyxl/),[Python Requests 教程](/web/pythonrequests/)和 [Python CSV 教程](/python/csv/)。