百变大魔王探花小明哥GBM分享 http://blog.sciencenet.cn/u/iggcas010 https://blog.csdn.net/SPESEG

博文

python3.6.5中的map函数

已有 2641 次阅读 2018-6-19 16:35 |系统分类:科研笔记|关键词:学者| python3, map, 函数

 

各位在用map函数时是不是也有个疑问,特别是3.x以上的版本,在2.x的版本中map函数很好理解,现在版本升级了反而越来越难搞了,map这个函数在高版本中竟然是一个对象了??!完全是一脸懵逼的,而map后的对象有种“阅后即焚”的感觉,不信咱试试哈。如下举例:


1、想获取对象中的东西,也就是该对象到底是啥?

>>> a=[[1, 2,3, 4,6], [2, 3,4, 5,6]]
>>> a2=map(set, a)
>>> a2
<map object at 0x000000000C462438>
#a2是个对象啊
#将a2中的东西全部打印出来
>>> for item in a2:
	print(item)

	
{1, 2, 3, 4, 6}
{2, 3, 4, 5, 6}

>>> a2
<map object at 0x000000000C462438>
#再次查看a2地址没变,但是再次遍历打印为空
>>> for item in a2:
	print(item)


#a2再也不愿意出来了见客了,只能使用它一次,再用它就不理你了	
>>> list(a2)
[]
#list后为空


2、将对象转化为列表,仍旧只能用一次,惹不起

>>> b=[[1, 2,3, 4,6], [2, 3,4, 5,6]]
>>> b2=map(set,b)
>>> b2
<map object at 0x0000000002F49F60>
>>> list(b2)
[{1, 2, 3, 4, 6}, {2, 3, 4, 5, 6}]
>>> b2
<map object at 0x0000000002F49F60>
#用过一次它就消失了
>>> list(b2)
[]
>>> for ii in b2:
	print(ii)

	
>>>


3、直接赋值式复制不能备份


>>> c=[[1, 2,3, 4,6], [2, 3,4, 5,6]]
>>> c2=map(set,c)
>>> c3=c2
>>> for ij in c2:
	print(ij)

	
{1, 2, 3, 4, 6}
{2, 3, 4, 5, 6}
>>> list(c3)
[]
>>>


4、copy复制也不行

#浅复制
>>> import copy
>>> f=[[1, 2,3, 4,6], [2, 3,4, 5,6]]
>>> f2=map(set,f)
>>> f3=copy.copy(f2)
>>> f3
<map object at 0x000000000C3D1A58>
>>> f2
<map object at 0x000000000C462748>

#浅复制后的地址不同,我以为要成功了,其实不是
>>> for m in f2:
	print(m)

	
{1, 2, 3, 4, 6}
{2, 3, 4, 5, 6}

>>> for n in f3:
	print(n)

	
>>> 
#仍旧“阅后即焚”

#深复制
>>> import copy
>>> g=[[1, 2,3, 4,6], [2, 3,4, 5,6]]
>>> g2=map(set,g)
>>> g3=copy.deepcopy(g2)
>>> g3
<map object at 0x000000000C462AC8>
>>> g2
<map object at 0x000000000C462908>

>>> list(g2)
[{1, 2, 3, 4, 6}, {2, 3, 4, 5, 6}]
>>> list(g3)
[{1, 2, 3, 4, 6}, {2, 3, 4, 5, 6}]
#深复制后可以啊,可以用了,但仍旧是只能用一次,想用多少次就要先深复制几次

>>> len(list(g3))
0
#无奈而又不失礼貌的微笑


有人要疑惑了,我想知道map后的对象到底是啥都不行吗?这个map太娇气了,欠揍。

我也无奈啊!!!谁知道python开发者到底是咋想的啊,越来越差劲了。




https://m.sciencenet.cn/blog-1966190-1119748.html

上一篇:人工智能与未来
下一篇:机器学习之关联分析——Apriori算法一

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-18 23:12

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部