蟒蛇

2013-10-27 213 views
1
>>> dataset 
[[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]] 
>>> D=map(set,dataset) 
>>> D 
<map object at 0x0000000002ABF5F8> 

的地图功能,当我输入d到python3.3的互动窗口,我认为它应该出现:蟒蛇

[set([1, 3, 4]), set([2, 3, 5]), set([1, 2, 3, 5]), set([2, 5])]

为什么地图对象?

+4

它返回发生器为3+,做'列表(地图(集合,数据集))' –

+2

阅读[获取地图()返回列表在Python 3.1中)(http://stackoverflow.com/questions/1303347/getting-a-map-to-return-a-list-in-python-3-1)我没有在任何地方阅读但我观察到了不同之处,在新的Python版本中,大多数内置函数返回的是生成器而不是序列为了提高效率,我想) –

+1

你也可以使用LC ['set(i)for i在数据集中]' –

回答

2

为什么地图的结果是一个对象?因为在documentation for python 3.3中写道它会产生结果,因此它是一个生成器。

您可以通过使用

for i in D: 
    print i 

阅读或因为它是由Grijesh

list(D)建议将其转换为列出

2

在Python 3,地图不返回一个列表,而是一个地图对象,一个迭代器。这里有一个similar question。 如果你需要一个列表,你可以很容易地将其转换为一个列表:

D = list(map(set,dataset)) 

docs这个问题。

顺便说一句,对于变量名使用小写字母是一种很好的做法。希望这可以帮助!

+0

我写的时候还没有见过你的。不好意思,朋友。 – aIKid