欢迎访问宙启技术站
智能推送

了解 Python 的“map”函数及其使用

发布时间:2023-06-13 17:48:41

Python 中的内建函数 map() 可以对可迭代对象中的所有元素应用某个函数,返回一个迭代器,该迭代器产生按给定函数处理后的结果。 map() 的一般语法为:

map(function, iterable, ...)

其中,function 表示应用到 iterable 中所有元素的函数,iterable 是可迭代对象,如列表、元组、集合等,... 表示可选多个可迭代对象。

map() 会将 iterable 中每个元素传递给 function,返回一个由 function 处理后的结果组成的新迭代器。而且,如果 itertools 函数中传入的迭代器的长度不一样,则结果长度和最短传入的 iterable 相同。

下面是一个简单的示例,展示如何使用 map() 对列表中的每个元素进行平方运算:

nums = [1, 2, 3, 4, 5]

squared = map(lambda x: x ** 2, nums)

print(list(squared))

输出结果为:

[1, 4, 9, 16, 25]

除了上面的示例中使用的 lambda 函数外,还可以使用自定义函数去完成操作。比如,下面使用一个自定义函数对列表中的每个元素进行转换:

def convert(x):

    if x.isnumeric():

        x = int(x)

    return x

lst = ['1', '2', '3', '4', '5']

result = list(map(convert, lst))

print(result)

输出结果为:

[1, 2, 3, 4, 5]

上面示例中的 convert() 函数将字符串数字转换为整数。

使用 map() 与 filter() 配合,可以轻松实现过滤操作。下面是一个示例,用于筛选出列表中大于等于 3 的元素:

nums = [1, 2, 3, 4, 5]

filtered = list(filter(lambda x: x >= 3, nums))

squared = map(lambda x: x ** 2, filtered)

print(list(squared))

输出结果为:

[9, 16, 25]

上面示例中,使用 filter() 过滤出大于等于 3 的元素,然后再使用 map() 对这些元素进行平方运算。

总之,map() 函数是 Python 中一个非常方便和强大的工具,可用于各种情况,特别是在需要对列表或任何可迭代对象的元素进行类似转换或操作时。