Python之map()函数详解

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。Python之map()函数详解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、map() 函数简介

当我们使用列表或者元组时,经常需要对列表元素进行数学变换操作并返回一个新的列表。例如,我们想要将列表 bonuses 中的每个元素都乘以 2:

bonuses = [100, 200, 300]

为此,我们可以使用一个 for 循环遍历列表,将每个元素乘以 2,然后将结果添加到一个新的列表中:

bonuses = [100, 200, 300]

new_bonuses = []

for x in bonuses:
    new_bonuses.append(x*2)

print(new_bonuses)  # 输出:[200, 400, 600]

1.1 map() 函数基本语法

Python 提供了一个内置的 map() 函数,可以更加方便地执行这类操作。
以下是 map() 函数的基本语法:

map(function, iterable)

参数解释如下:

  • function:一个函数或方法
  • iterable:一个或多个序列(可迭代对象)

map() 函数的作用是:对序列 iterable 中每一个元素调用 function 函数,返回一个map对象实例。这个map对象本质上来讲是一个迭代器。

回到上面的示例,我们可以定义一个乘以 2 的函数,然后使用 map() 函数调用该函数:

def double_func(x):
    return x* 2

bonuses = [100, 200, 300]

iterator = map(double_func, bonuses)

1.2 map() 函数+ lambda表达式

或者也可以使用 lambda 表达式对代码进一步进行简化,例如:

bonuses = [100, 200, 300]
iterator = map(lambda x: x*2, bonuses)
print(list(iterator))  # 输出:[200, 400, 600]

1.3 map() 函数输入多个可迭代对象iterable

b1 = [100, 200, 300]
b2 = [1, 2, 3]

iterator = map(lambda x,y : x*y, b1, b2)
print(list(iterator))  # 输出:[100, 400, 900]

1.4 查看返回的迭代器内容

使用map函数获得了迭代器iterator后,我们如何查看其中的内容呢?

  • 直接输出迭代器iterator,输出 map object 及其物理地址:
print(iterator)
# 输出:<map object at 0x7fa7f6165470>
  • 使用 for 循环对其进行遍历迭代器iterator:
for x in iterator:
    print(x)
# 输出:
# 200
# 400
# 600
  • 使用 list() 函数将迭代器转换为一个列表:
print(list(iterator))
# 输出:[200, 400, 600]

二、map() 函数示例

接下来我们继续看几个使用 map() 函数操作列表的示例。

示例一:使用 map() 函数操作字符串列表

以下示例使用 map() 函数对字符串列表中的每个元素进行首字母大写转换,然后返回一个新的列表:

names = ['david', 'peter', 'jenifer']
new_names = map(lambda name: name.capitalize(), names)
print(list(new_names))

输出结果如下:

['David', 'Peter', 'Jenifer']

示例二:使用 map() 函数操作元组列表

假设存在以下由多个元组组成的购物车列表:

carts = [['SmartPhone', 400],
         ['Tablet', 450],
         ['Laptop', 700]]

我们需要计算每个产品的纳税额,税率为 10%。同时,我们需要将纳税额作为第三个元素添加到每个产品信息中。最终返回的列表如下:

[['SmartPhone', 400, 40.0],
['Tablet', 450, 45.0],
['Laptop', 700, 70.0]]

为此,我们可以使用 map() 函数创建一个新的元素,将纳税额作为它的值:

carts = [['SmartPhone', 400],
         ['Tablet', 450],
         ['Laptop', 700]]

TAX = 0.1
carts = map(lambda item: [item[0], item[1], item[1] * TAX], carts)

print(list(carts))

参考资料

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/162766.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!