Python中map函数疑问:为何输出<map at 0x15a6cf17550>?
为什么调用map函数后输出是<map at 0x15a6cf17550>?
这是Python 3和Python 2的一个关键区别哦!在Python 3里,map()函数不再直接返回一个列表,而是返回一个迭代器对象(就是你看到的<map at 0x15a6cf17550>这种形式)——这么设计是为了节省内存,它不会一次性把所有计算结果都存进内存,而是等你需要的时候才逐个生成对应的值。
要得到你想要的转换后的温度列表,有两种简单的解决方法:
方法1:将map迭代器转换为列表
直接用list()函数把map对象包裹起来,就能得到完整的结果列表:
def fahrenheit(T): return (9.0/5)*T + 32 temp = [2 , 43 , 54 , 67 , 78 , 89.9] result = list(map(fahrenheit,temp)) print(result)
运行这段代码,就能输出[35.6, 109.4, 129.2, 152.6, 172.4, 193.82],也就是你预期的温度转换结果啦。
方法2:用列表推导式替代map(更Pythonic的写法)
不少Python开发者更青睐列表推导式,它的可读性更强,也能实现完全一样的功能:
def fahrenheit(T): return (9.0/5)*T + 32 temp = [2 , 43 , 54 , 67 , 78 , 89.9] result = [fahrenheit(t) for t in temp] print(result)
执行后输出的结果和方法1完全一致。
如果只是想逐个查看转换后的温度值,也可以直接用for循环遍历map对象:
for converted_temp in map(fahrenheit,temp): print(converted_temp)
这样会依次打印出每个转换后的温度数值。
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

