跳到主要内容

Python map() 函数

map() 函数将给定的函数应用于可迭代对象(如列表、元组等)的每个元素,并返回包含结果的迭代器。

示例

numbers = [2, 4, 6, 8, 10]

# 返回数字的平方
def square(number):
return number * number

# 对列表 numbers 的每个项目应用 square() 函数
squared_numbers_iterator = map(square, numbers)

# 转换为列表
squared_numbers = list(squared_numbers_iterator)
print(squared_numbers)

# 输出: [4, 16, 36, 64, 100]

map() 语法

其语法是:

map() 参数

map() 函数接受两个参数:

  • function - 一个函数
  • iterable - 一个可迭代对象,如 sets, lists, tuples

你可以向 map() 函数传递多个可迭代对象。

map() 返回值

map() 函数返回一个 map 类的对象。返回的值可以传递给诸如以下的函数:

  • list() - 转换为列表
  • set() - 转换为集合,等等。

示例 1:map() 的工作原理

def calculateSquare(n):
return n*n

numbers = (1, 2, 3, 4)
result = map(calculateSquare, numbers)
print(result)

# 将 map 对象转换为集合
numbersSquare = set(result)
print(numbersSquare)

输出

<map object at 0x7f722da129e8>
{16, 1, 4, 9}

在上面的示例中,元组的每个项目都被平方了。

由于 map() 期望传递一个函数,因此在使用 map() 函数时,通常会使用 lambda 函数。

lambda 函数是一个没有名字的简短函数。访问此页面了解更多关于 Python lambda 函数

示例 2:如何将 lambda 函数与 map() 一起使用?

numbers = (1, 2, 3, 4)
result = map(lambda x: x*x, numbers)
print(result)

# 将 map 对象转换为集合
numbersSquare = set(result)
print(numbersSquare)

输出

<map object at 0x7fafc21ccb00>
{16, 1, 4, 9}

这个示例和 示例 1 在功能上没有区别。

示例 3:向 map() 传递多个迭代器并使用 Lambda

在这个示例中,两个列表的相应项目被相加。

num1 = [4, 5, 6]
num2 = [5, 6, 7]

result = map(lambda n1, n2: n1+n2, num1, num2)
print(list(result))

输出

[9, 11, 13]