Python中的map函数
简介
map()会根据提供的函数对指定序列做映射。map()函数语法:
1 | map(function,iterable,...) |
map()参数:
function:函数
iterable:一个或多个序列
第一个参数function以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的新列表。
map函数的返回值在Python 2中返回列表,在Python 3中返回迭代器。
map()函数示例
1 2 3 4 5 6 7 8 9 | def square(x): # 计算平方数 return x ** 2 print(list(map(square, [1, 2, 3, 4, 5]))) # 计算列表各个元素的平方,[1, 4, 9, 16, 25] print(list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))) # 使用 lambda 匿名函数,[1, 4, 9, 16, 25] # 提供了两个列表,对相同位置的列表数据进行相加,[3, 7, 11, 15, 19] print(list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))) |
运行结果:
1 2 3 | [1, 4, 9, 16, 25] [1, 4, 9, 16, 25] [3, 7, 11, 15, 19] |
几个示例
map(str,[1,2,3,4,5,6,7,8,9])输出什么?Python 2和Python 3输出的结果一样吗?
在Python中执行以下代码:
1 2 3 4 | from collections import Iterable,Iterator print(map(str,[1,2,3,4,5,6,7,8,9])) print(isinstance(map(str,[1,2,3,4,5,6,7,8,9]),Iterable)) print(isinstance(map(str,[1,2,3,4,5,6,7,8,9]),Iterator)) |
Python 3运行结果:
1 2 3 | <map object at 0x01D38430> True True |
Python 2运行结果:
1 2 3 | ['1', '2', '3', '4', '5', '6', '7', '8', '9'] True False |
map(str,[1,2,3,4,5,6,7,8,9])输出什么?
1 2 3 4 5 6 7 | # 每个整数都转换为字符串: >>> print(list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))) ['1', '2', '3', '4', '5', '6', '7', '8', '9'] # 每个字符串都转换为整数: >>> print(list(map(int, ['1', '2', '3', '4', '5', '6', '7', '8', '9']))) [1, 2, 3, 4, 5, 6, 7, 8, 9] |
请使用一行代码实现对列表a=[1, 2, 3, 4, 5]中的偶数位置的元素进行加3后求和。
答案:偶数位置的元素即2和4,分别加3后再相加,即12(2+3+4+3)。使用map函数,如下所示:
1 2 | >>> sum(map(lambda x: x + 3, a[1::2])) 12 |
下面代码会输出什么?
1 | print(list(map(lambda x:x*x,[y for y in range(3)]))) |
答案:运行结果:
1 | [0, 1, 4] |
列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]。
答案:程序如下所示:
1 2 3 4 | li=[1,2,3,4,5] res=map((lambda x:x**2),li) res=[i for i in res if i>10] print(res) |