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

Python内置函数:map()的使用方法和示例

发布时间:2023-05-28 13:34:08

在Python中,map()是一种内置函数,它为列表、元组或其他可迭代对象提供通用的映射操作。它接收两个参数:一个函数和一个可迭代对象。它会对可迭代对象中的每个元素应用这个函数,并返回一个映射后的结果列表。

map()函数的语法如下:

map(function, iterable, ...)

参数说明:

- function:一个函数,用于对可迭代对象中的每个元素进行映射。

- iterable:一个或多个可迭代对象,对这些对象中的每一个元素都应用function函数。

- ...:可选参数,如果指定了多个可迭代对象,则函数必须同时接受相同数量的参数,且在每个迭代中,这些迭代器都会提供下一个元素。

返回值:

map()函数返回一个可迭代对象,其中包含对原可迭代对象中的每个元素进行映射后得到的结果。

下面是一些示例,展示了map()函数的使用方法及其功能:

### 示例1:使用map()映射列表元素

def square(x):
    return x**2

numbers = [1, 2, 3, 4, 5]
squared_nums = map(square, numbers)

print(list(squared_nums))

输出结果为:[1, 4, 9, 16, 25]

上述代码定义了一个名为square()的函数,它接收一个数字作为参数,并返回该数字的平方。然后,我们创建了一个数字列表,并将square()函数应用于该列表的每个元素。最后,我们将输出映射后的结果列表。

### 示例2:同时映射两个列表

nums1 = [1, 2, 3]
nums2 = [4, 5, 6]

sums = map(lambda x, y: x + y, nums1, nums2)

print(list(sums))

输出结果为:[5, 7, 9]

上述代码使用一个lambda函数将两个列表的元素进行相加。使用该函数和两个列表作为参数来调用map()函数,并将结果列表转换为列表。

### 示例3:映射多个列表

nums1 = [1, 2, 3]
nums2 = [4, 5, 6]
nums3 = [7, 8, 9]

sums = map(lambda x, y, z: x + y + z, nums1, nums2, nums3)

print(list(sums))

输出结果为:[12, 15, 18]

上述代码使用一个lambda函数将三个列表的元素进行相加。使用该函数和三个列表作为参数来调用map()函数,并将结果列表转换为列表。

### 示例4:映射元组元素

def calc_bmi(height_weight):
  height, weight = height_weight
  bmi = weight / (height/100)**2
  return round(bmi, 1)

people = [("Alice", 165, 68), ("Bob", 175, 75), ("Charlie", 180, 82)]

bmi_list = map(calc_bmi, people)

for index, (name, *hw) in enumerate(people):
  print(f"{name}'s BMI is {next(bmi_list)}")

输出结果为:

Alice's BMI is 25.0
Bob's BMI is 24.5
Charlie's BMI is 25.3

上述代码定义了一个名为calc_bmi()的函数,它接收一个包含身高和体重的元组,并计算BMI指数。然后,我们创建了一个元组列表,并将calc_bmi()函数应用于该列表的每个元素。最后,我们通过使用next()函数来提取每个人的BMI值。

### 示例5:将字符串映射为字典

data = "a:1,b:2,c:3,d:4"
result = dict(map(lambda x: x.split(":"), data.split(",")))

print(result)

输出结果为:{'a': '1', 'b': '2', 'c': '3', 'd': '4'}

上述代码将一个包含字典键值对的字符串转换为字典。使用split()函数将该字符串分离为包含单个键值对的列表。然后,使用一个lambda函数将每个键值对拆分为键和值,并将结果映射到字典对象中。

总结:

map()函数是一个强大的工具,它可用于映射各种类型的数据集合。你可以使用函数、lambda函数或其他可调用对象作为参数,以便尽量优化代码。在大多数情况下,map()函数可以用于简化代码和提高性能。