2012-04-11 9 views
5

Próbuję przekonwertować wartości listy za pomocą funkcji map, ale otrzymuję dziwny wynik.Problemy z mapą()

s = input("input some numbers: ") 
i = map(int, s.split()) 
print(i) 

daje:

input some numbers: 4 58 6 
<map object at 0x00000000031AE7B8> 

dlaczego nie powrócić [ '4', '58', '6']?

+0

Czy próbowałeś z nadrukiem (STR (I))? – Soader03

+0

Działa dla mnie zgodnie z oczekiwaniami, czy możesz podać nam jakiś kontekst? Wersja Pythona? Czy używasz wersji 2.x lub 3.x? – KurzedMetal

+0

Używam Pythona 3.2.2, nie ma kontekstu w tym momencie. – Sergei

Odpowiedz

9

Używasz pythona 3, który zwraca generatory zamiast list.

Zadzwoń pod list(x) na zmienną po przypisaniu jej do generatora map.

+4

Warto zauważyć, że można również użyć funkcji sprawdzania list jako alternatywy - '' [int (x) dla x w s.split()] ''. To jest ładne i czytelne, chociaż w tym (prostym) przypadku nie powiedziałbym, że mapa jest nieczytelna. –

2

Musisz zrobić list(i), aby uzyskać ['4','58','6'] jako map w python 3 zwraca generator zamiast listy. Ponadto, jak wskazał Lattyware w komentarzu do pierwszej odpowiedzi lepiej to zrobić:

i = [int(x) for x in s.split()] 
+0

Dlaczego? [Odpowiedź Jamylaka] (http://stackoverflow.com/a/10106900/722121) wyjaśnia lepiej. –

+1

Położył przede mną i wyjaśnił to. Więc nie zrobiłem: p – mshsayem