带有示例的 Python map() 函数
Python map() 对作为输入给出的迭代器的所有项应用一个函数。例如,一个迭代器可以是一个列表、一个元组、一个集合、一个字典、一个字符串,并且它返回一个可迭代的映射对象。 Python map() 是一个内置函数。
在本教程中,您将学习:
- 语法:
- map() 函数是如何工作的?
- 在 Python 内置函数中使用 map()
- 使用带有字符串的 map() 作为迭代器
- 使用带有数字列表的 map()
- 在元组中使用 map()
- 在字典中使用 map()
- 在集合中使用 map()
- 在 Lambda 函数中使用 map()
- 在 map() 函数中使用多个迭代器
语法:
map(function, iterator1,iterator2 ...iteratorN)
参数
这里有两个重要的
- function:必须赋予 map 的函数,将应用于迭代器中的所有可用项。
- iterator:一个可迭代的强制对象。它可以是列表、元组等。您可以将多个迭代器对象传递给 map() 函数。
返回值
map() 函数将对迭代器内的所有项目应用给定的函数,并返回一个可迭代的映射对象,即元组、列表等。
map() 函数是如何工作的?
map() 函数接受两个输入作为函数和一个可迭代对象。给 map() 的函数是一个普通函数,它将遍历给定的可迭代对象中存在的所有值。
例如,假设您有一个数字列表,并且您想要找到每个数字的平方。
为了得到输出,我们需要一个函数来返回给定数字的平方。函数如下:
def square(n): return n*n
我们要找方块的物品清单如下:
my_list = [2,3,4,5,6,7,8,9]
现在让我们使用 map() python 内置函数来获取 my_list 中每个项目的平方。
最终代码如下:
def square(n): return n*n my_list = [2,3,4,5,6,7,8,9] updated_list = map(square, my_list) print(updated_list) print(list(updated_list))
输出:
<map object at 0x0000002C59601748> [4, 9, 16, 25, 36, 49, 64, 81]
map() 函数的输出,如输出所示,是在屏幕上显示为
您必须使用 for 循环或使用 list() 方法迭代地图的输出以获得最终输出。我在代码中使用了 list() 来显示给定列表中的值。
所以使用 map() 函数,我们能够得到每个数字的平方。给 map 的列表是 [2,3,4,5,6,7,8,9] 并使用函数 square() 输出从 map() 我们得到的是 [4, 9, 16, 25, 36, 49, 64, 81] 。
函数 map() 将函数 square() 应用于列表中的所有项目。例如,my_list 变量并使用每个数字的平方更新列表。 out 存储在 updated_list 变量中。
将 map() 与 Python 内置函数一起使用
Python map() 函数是一个内置函数,也可以与 Python 中可用的其他内置函数一起使用。在示例中,我们将使用 Python round() 内置函数对给定的值进行四舍五入。
示例:
我的列表是 my_list =[2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907] 。
我需要列表中每个项目的四舍五入值。我们将使用round()作为map()的函数。
my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907] updated_list = map(round, my_list) print(updated_list) print(list(updated_list))
输出:
<map object at 0x000000E65F901748> [3, 4, 4, 6, 6, 8, 8, 10]
round() 函数应用于列表中的所有项目,并返回一个列表,其中所有值都四舍五入,如输出所示。
使用带有字符串的 map() 作为迭代器
我们还可以在字符串上使用 map()。在 Python 中,字符串的作用类似于数组,因此我们可以轻松地在 map() 中使用它。
在示例中,我们有一个函数 myMapFunc() 负责将给定的字符串转换为大写。函数 myMapFunc () 被赋予 map() 函数。map 函数将通过将字符串传递给 myMapFunc() 来处理将给出的字符串转换为大写。
def myMapFunc(s): return s.upper() my_str = "welcome to guru99 tutorials!" updated_list = map(myMapFunc, my_str) print(updated_list) for i in updated_list: print(i, end="")
输出:
<map object at 0x000000DF2E711748> WELCOME TO GURU99 TUTORIALS!
将 map() 与数字列表一起使用
使用 map() 中的列表将获取一个数字列表并将列表中的每个数字乘以 10。
我们要使用的列表是:[2,3,4,5,6,7,8,9]。函数 myMapFunc () 负责将给定数字乘以 10。该函数与列表一起映射。
示例:
def myMapFunc(n): return n*10 my_list = [2,3,4,5,6,7,8,9] updated_list = map(myMapFunc, my_list) print(updated_list) print(list(updated_list))
输出:
<map object at 0x000000EE2C061898> [20, 30, 40, 50, 60, 70, 80, 90]
我们看到的输出是列表中的每个数字都是
乘以 10。
在元组中使用 map()
元组是 Python 中的一个对象,它的项目用逗号分隔并用圆括号括起来。在示例中,我们将采用带有字符串值的元组。我们将使用的函数会将给定的值转换为大写。
示例:
def myMapFunc(n): return n.upper() my_tuple = ('php','java','python','c++','c') updated_list = map(myMapFunc, my_tuple) print(updated_list) print(list(updated_list))
输出:
<map object at 0x0000009C3C3A16A0> ['PHP', 'JAVA', 'PYTHON', 'C++', 'C']
我们得到的输出是一个元组,其中的所有值都转换为大写。
在字典中使用 map()
Python 中的字典是使用大括号 ({}) 创建的。由于字典是一个迭代器,您可以在 map() 函数中使用它。现在让我们在 map() 函数中使用字典作为迭代器。
以下示例显示了 map() 中字典迭代器的工作
def myMapFunc(n): return n*10 my_dict = {2,3,4,5,6,7,8,9} finalitems = map(myMapFunc, my_dict) print(finalitems) print(list(finalitems))
输出:
<map object at 0x0000007EB451DEF0> [20, 30, 40, 50, 60, 70, 80, 90]
在集合中使用 map()
Python 中的 Set 是花括号 (()) 中项的无序集合。由于 set() 也是一个迭代器,您可以在 map() 函数中使用它。
这是一个在 map() 中使用 set 作为迭代器的工作示例
def myMapFunc(n): return n*10 my_set = {2,3,4,5,6,7,8,9} finalitems = map(myMapFunc, my_set) print(finalitems) print(list(finalitems))
输出:
<map object at 0x000000AC8F05DEF0> [20, 30, 40, 50, 60, 70, 80, 90]
在 Lambda 函数中使用 map()
在 Python 中,lambda 表达式用于构造匿名函数。就像使用 def 定义普通函数一样,您必须使用 lambda 关键字。
因此,在示例中,我们将在 map() 中使用 lambda 函数。 lambda 函数会将列表中的每个值乘以 10。
示例:
my_list = [2,3,4,5,6,7,8,9] updated_list = map(lambda x: x * 10, my_list) print(updated_list) print(list(updated_list))
输出:
<map object at 0x000000BD18B11898> [20, 30, 40, 50, 60, 70, 80, 90]
在 map() 函数中使用多个迭代器
示例 1:将两个列表迭代器传递给 map()
您可以同时向 map() 函数发送多个迭代器,即列表、元组等。
例如,如果要添加两个列表。使用 map() 函数也可以做到这一点。我们将使用两个列表 my_list1 和 my_list2。
在下面的示例中,将 my_list1 中的第一项添加到 my_list2 的第一项中。函数 myMapFunc() 接受 my_list1 和 my_list2 的项目并返回两者的总和。
这是使用 map() 函数添加两个给定列表的工作示例。
def myMapFunc(list1, list2): return list1+list2 my_list1 = [2,3,4,5,6,7,8,9] my_list2 = [4,8,12,16,20,24,28] updated_list = map(myMapFunc, my_list1,my_list2) print(updated_list) print(list(updated_list))
输出:
<map object at 0x0000004D5F751860> [6, 11, 16, 21, 26, 31, 36]
示例 2:将一个元组和一个列表迭代器传递给 map()
我们将在 map() 函数中使用列表和元组迭代器。该函数被赋予 map - myMapFunc() 将从列表和元组中获取项目。这些项目将使用下划线 (_) 连接。工作示例如下所示:
def myMapFunc(list1, tuple1): return list1+"_"+tuple1 my_list = ['a','b', 'b', 'd', 'e'] my_tuple = ('PHP','Java','Python','C++','C') updated_list = map(myMapFunc, my_list,my_tuple) print(updated_list) print(list(updated_list))
输出:
<map object at 0x00000059F37BB4E0> ['a_PHP', 'b_Java', 'b_Python', 'd_C++', 'e_C']
总结
- Python map() 是一个内置函数,它将函数应用于作为输入的迭代器的所有项。例如,迭代器可以是列表、元组、字符串等,它返回一个可迭代的映射对象。
- map() 函数将对迭代器内的所有项目应用给定函数,并返回一个可迭代的映射对象,即元组、列表等。
- Python map() 函数是一个内置函数,也可以与 Python 中提供的其他内置函数一起使用。
- 元组是 Python 中的一个对象,它的项目用逗号分隔并用圆括号括起来。在示例中将采用带有字符串值的元组。我们将使用的函数会将给定的值转换为大写。
- Python 中的字典是使用大括号 ({}) 创建的。由于字典是一个迭代器,您可以在 map() 函数中使用它。
- Python 中的 Set 是大括号 (()) 中项的无序集合。由于 set() 也是一个迭代器,您可以在 map() 函数中使用它。
- 在 Python 中,lambda 表达式(或 lambda 形式)用于构造匿名函数。所以当你想在 map() 中使用 lambda 时,必须使用 lambda 关键字。
- 您可以向 map() 函数发送多个迭代器,即一个列表、一个元组。
Python