Python map() 函数及示例
Python的map()函数将一个函数应用于作为输入的迭代器的所有项。例如,迭代器可以是列表、元组、集合、字典、字符串,它会返回一个可迭代的map对象。Python的map()是一个内置函数。
语法
map(function, iterator1,iterator2 ...iteratorN)
参数
以下是两个重要的
- 函数:要传递给map的强制性函数,它将应用于迭代器中的所有项。
- 迭代器:必需的可迭代对象。它可以是列表、元组等。您可以将多个迭代器对象传递给map()函数。
返回值
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()函数的输出是一个map对象,显示在屏幕上为 <map object at 0x0000002C59601748>。
您需要使用for循环或list()方法来迭代map的输出以获得最终输出。我在代码中使用了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变量,并使用每个数字的平方更新列表。输出存储在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。该函数与列表一起传递给map。
示例
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()也是一个迭代器,您可以在map()函数中使用它。
以下是一个使用set作为map()中迭代器的实际示例
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]
将map()与Lambda函数一起使用
在Python中,lambda表达式用于构建匿名函数。您需要使用lambda关键字,就像使用def来定义普通函数一样。
因此,在示例中,我们将在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对象。
- map()函数将给定的函数应用于迭代器内的所有项,并返回一个可迭代的map对象,即元组、列表等。
- Python map()函数是一个内置函数,也可以与其他Python内置函数一起使用。
- 元组是Python中一个由逗号分隔并用圆括号括起来的项组成的。在示例中,我们将使用一个包含字符串值的元组。我们将使用的函数将把给定的值转换为大写。
- Python中的字典使用花括号({})创建。由于字典是迭代器,您可以在map()函数中使用它。
- Python中的集合是花括号(())中无序的项集合。由于set()也是一个迭代器,您可以在map()函数中使用它。
- 在Python中,lambda表达式(或lambda形式)用于构建匿名函数。因此,当您想在map()中使用lambda时,必须使用lambda关键字。
- 您可以将多个迭代器,即列表、元组传递给map()函数。