2013-10-27 2 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+, Do 'list (map (set, dataset))' –

+2

Прочтите [Получение карты() для возврата списка в python 3.1] (http://stackoverflow.com/questions/1303347/get-a-map-to-return-a-list-in-python-3-1) Я не читал нигде. Но я наблюдаю разницу в том, что в новой версии Python большинство встроенных функций возвращают генератор вместо последовательностей (для эффективности я полагаю) –

+1

Вы также можете использовать LCs '[set (i) для 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

Смежные вопросы