赞
踩
map
函数是python
的内置函数之一。函数形式:
map(fun, iter)
我们将可迭代数据iter
传递给fun
函数进行操作。
NB
(注意): #
后面的部分表示输出结果
代码如下:
def func(n):
return len(n)
x = map(func, ('hello', 'world'))
print(x) # <map object at 0x0000020F8D6BD988>
print(list(x)) # [5, 5]
print(tuple(x)) # ()
func
为map
函数需要的第一个参数,该参数为一个函数表达式,('hello', 'world')
为map
需要的第二个参数,该参数通常是可迭代的,比如列表,元胞,此处我们采用元胞输入。该函数会将第二个参数中的各个元素值传递给func
,执行后得到的结果统一返回,这里我们赋值给x
,但是此时的x为一个map
对象并不能够直接打印显示,想要直观地看到打印后的结果,我们还需要使用list
或者tuple
方法对变量x
进行类型转换,最后打印即可得到输出。
存在的问题:
我们可以看到当我们使用上述方法打印时,print(list(x))
可以正常得到结果[5, 5]
,而print(tuple(x))
不能够输出结果。我们进一步进行如下尝试:
def func(n):
return len(n)
x = map(func, ('hello', 'world'))
print(x) # <map object at 0x0000020F8D6BD988>
print(tuple(x)) # (5, 5)
print(list(x)) # []
对比两次的结果,我们可以发现,当我们优先以list
类型输出时,list类型结果可以正常显示,而tuple
类型的结果无法正常显示,当我们以tuple
类型优先输出时,tuple
类型结果可以正常显示,而list
类型结果无法正常显示,仿佛被屏蔽了…这是因为map的结果是一个可迭代的对象,它只能够被操作一次,所以当tuple优先操作时,list便为空,list先操作时,tuple便为空。 为了避免这种情况的出现,我们可以使用以下方式对代码进行改写:
def func(n):
return len(n)
x = map(func, ('hello', 'world'))
x1 = list(x)
x2 = tuple(x1)
print(x1) # [5, 5]
print(x2) # (5, 5)
可以看到此时输出可以同时得到list
与tuple
类型的输出结果。
如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。