Python map() 函数用于将函数应用于指定的可迭代和返回地图对象的所有元素。Python 地图对象是 iterator,因此我们可以对其元素进行迭代。
Python 地图() 功能
Python map() 函数语法是:
1map(function, iterable, ...)
我们可以将多个可迭代参数传递到 map() 函数,在这种情况下,指定函数必须有那么多的参数. 该函数将并行应用于这些可迭代元素. 使用多个可迭代参数,当最短的可迭代元素耗尽时,地图迭代器会停止。
Python 地图(示例)
让我们写一个函数来使用与map()函数。
1def to_upper_case(s):
2 return str(s).upper()
它是一个简单的函数,返回了输入对象的上方字符串表示。我还定义了一个实用函数来打印迭代器元素。
1def print_iterator(it):
2 for x in it:
3 print(x, end=' ')
4 print('') # for new line
让我们看看 Map() 函数示例与不同类型的 iterables。
Python 地图() 与 string
1# map() with string
2map_iterator = map(to_upper_case, 'abc')
3print(type(map_iterator))
4print_iterator(map_iterator)
输出:
1<class 'map'>
2A B C
Python 地图() 与 Tuple
1# map() with tuple
2map_iterator = map(to_upper_case, (1, 'a', 'abc'))
3print_iterator(map_iterator)
输出:
11 A ABC
Python 地图() 与列表
1map_iterator = map(to_upper_case, ['x', 'a', 'abc'])
2print_iterator(map_iterator)
输出:
1X A ABC
将地图转换为 list, tuple, set
由于地图对象是一个迭代器,我们可以将其作为一个参数传递给创建列表、tuple、set 等的工厂方法。
1map_iterator = map(to_upper_case, ['a', 'b', 'c'])
2my_list = list(map_iterator)
3print(my_list)
4
5map_iterator = map(to_upper_case, ['a', 'b', 'c'])
6my_set = set(map_iterator)
7print(my_set)
8
9map_iterator = map(to_upper_case, ['a', 'b', 'c'])
10my_tuple = tuple(map_iterator)
11print(my_tuple)
输出:
1['A', 'B', 'C']
2{'C', 'B', 'A'}
3('A', 'B', 'C')
Python 地图() 与 lambda
我们可以使用 lambda 函数与 map() 如果我们不想重复使用它,这是有用的,当我们的函数很小,我们不想定义一个新的函数。
1list_numbers = [1, 2, 3, 4]
2
3map_iterator = map(lambda x: x * 2, list_numbers)
4print_iterator(map_iterator)
输出:
12 4 6 8
Python 地图() 多个参数
让我们来看看使用 map() 函数与多个可迭代参数的一个例子。
1# map() with multiple iterable arguments
2list_numbers = [1, 2, 3, 4]
3tuple_numbers = (5, 6, 7, 8)
4map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
5print_iterator(map_iterator)
输出: 5 12 21 32
请注意,我们的函数有两个参数. 输出地图迭代器是将此函数应用于两种可迭代元素的平行结果。
1# map() with multiple iterable arguments of different sizes
2list_numbers = [1, 2, 3, 4]
3tuple_numbers = (5, 6, 7, 8, 9, 10)
4map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
5print_iterator(map_iterator)
6
7map_iterator = map(lambda x, y: x * y, tuple_numbers, list_numbers)
8print_iterator(map_iterator)
输出:
15 12 21 32
25 12 21 32
因此,当参数大小不同时,将地图函数应用于元素,直到其中一个元素耗尽。
Python 地图() 功能 None
让我们看看当我们将函数作为 None 传递时会发生什么。
1map_iterator = map(None, 'abc')
2print(map_iterator)
3for x in map_iterator:
4 print(x)
输出:
1Traceback (most recent call last):
2 File "/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_map_example.py", line 3, in <module>
3 for x in map_iterator:
4TypeError: 'NoneType' object is not callable
您可以从我们的 GitHub 存储库中查阅完整的 Python 脚本和更多 Python 示例。
参考: 官方文件