Python map()函数

map() 函数是 Python 中的内置函数,用于将一个函数应用于迭代器(例如列表、元组、集合等)中的每个元素,并返回结果的迭代器。

Python map() 函数

语法:

map(function, iterable, ...)

参数:

  • function:它是一个函数,map 将给定可迭代的每个元素传递给该函数。
  • iterable:要映射的可迭代对象。

注意:您可以将一个或多个可迭代对象传递给 map() 函数。

返回:

返回一个包含结果的迭代器。你可以将其转换为列表、元组或其他类型的可迭代对象,以便查看结果。

Python map() 函数示例

这段代码演示了map()函数的工作原理。它定义了一个addition函数,该函数返回一个数字的两倍。然后,通过map()函数将addition函数应用于包含数字的元组,并将结果转换为列表以查看加倍后的值。

# Python程序演示map的工作原理。

# 返回n的两倍
def addition(n):
	return n + n

# 使用map()函数将所有数字加倍
numbers = (1, 2, 3, 4)
result = map(addition, numbers)
print(list(result))

输出:

[2,4,6,8]

我们还可以将lambda 表达式与 map 结合使用来实现上述结果。

# 使用map和lambda将所有数字加倍

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

输出:

[2,4,6,8]

下面的这段代码使用map和lambda函数将两个列表numbers1和numbers2中的对应元素相加,并将结果转换为列表。

# 使用map和lambda将两个列表相加

numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]

result = map(lambda x, y: x + y, numbers1, numbers2)
print(list(result))

输出:

[5,7,9]

下面的这段代码使用map函数将字符串列表l中的每个字符串转换为字符列表,并将结果存储在test中。

# 字符串列表
l = ['sat', 'bat', 'cat', 'mat']

# map()可以将字符串列表中的每个字符串转换为字符列表
test = list(map(list, l))
print(test)

输出:

[['s', 'a', 't'], ['b', 'a', 't'], ['c', 'a', 't'], ['m', 'a ', 't']]

将 if 语句与 map() 一起使用:

在该示例中,double_even() 函数将偶数加倍并保持奇数不变。map() 函数用于将此函数应用于数字列表的每个元素,并且函数内使用 if 语句来执行必要的条件逻辑。

时间复杂度分析:

map 函数将 double_even 函数应用于列表的每个元素。map 函数的时间复杂度为 O(n),其中 n 是列表中元素的数量。double Even 函数的时间复杂度是常数,O(1),因为它只执行单个算术运算和比较。因此,程序的总体时间复杂度为O(n)。

空间复杂度分析:程序使用一个列表来存储map函数的结果,因此空间复杂度与列表中元素的数量成正比。在最坏的情况下,如果所有元素都是偶数,则结果列表将具有与输入列表相同的元素数量。因此,最坏情况下的空间复杂度为O(n)。

# 定义一个函数,将偶数翻倍,保持奇数不变
def double_even(num):
    if num % 2 == 0:
        return num * 2
    else:
        return num

# 创建一个数字列表以应用该函数
numbers = [1, 2, 3, 4, 5]

# 使用map函数将该函数应用于列表中的每个元素
result = list(map(double_even, numbers))

# 打印结果
print(result)

输出:

[1,4,3,8,5]

时间复杂度:O(n),其中n是输入列表的长度。map() 函数将 double_even() 函数应用于列表中的每个元素,这需要常数时间。因此,总体时间复杂度与输入列表的长度成正比。

辅助空间复杂度: O(n),其中n是输入列表的长度。map() 函数创建一个新列表来存储输出,该列表占用的空间与输入列表的长度成正比。因此,辅助空间复杂度也与输入列表的长度成正比。