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对象变为了空的话,那就太感谢了!