欢迎使用CSDN-markdown编辑器

来源:互联网 发布:柜子设计软件手机 编辑:程序博客网 时间:2024/05/20 14:44

Python3中map对象问题

在python2中,map函数会返回一个list列表,例如:

>>>x=map(str,[1,2,3])['1','2','3']

在python3中,map函数返回的是一个map对象,例如:

>>>x=map(str,[1,2,3])<map at 0x22f40f3a630>

在python3中如果想要将这个map对象用列表的方式输出,需要用list()函数进行转换,例如:

>>>list(x)['1', '2', '3']

问题出现了,讲道理,刚刚执行的list操作是不会影响到map对象x本身的内容的,但是如果再对map对象x进行一次list操作,会发现x中的内容变为了空,影响了map对象的二次使用。例如:

>>>list(x)[]

具体整个过程看下图:
这里写图片描述

对于这个问题,我用的解决方法是,在生成map对象以后便用列表推导式把map对象转换为列表。

>>>x=map(str,[1,2,3])>>>x=[v for v in x]['1','2','3']

或者

>>>x=list(map(str,[1,2,3]))['1','2','3']

另外如果能有大神解答,为什么两次list操作会使得map对象变为了空的话,那就太感谢了!

0 0
原创粉丝点击