2012-04-11 3 views
5

Я пытаюсь преобразовать значения списка с помощью функции map, но я получаю странный результат.Проблема с картой()

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

дает:

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

почему он не возвращается [ '4', '58', '6']?

+0

Пытались ли вы с принтом (ул (я))? – Soader03

+0

Работает для меня как и ожидалось, можете ли вы дать нам какой-то контекст? Версия Python? Вы используете 2.x или 3.x? – KurzedMetal

+0

Я использую python 3.2.2, на данный момент контекста нет. – Sergei

ответ

9

Вы используете python 3, который возвращает генераторы вместо списков.

Вызвать list(x) на переменную после того, как вы присвоите ей генератор карт.

+4

Стоит отметить, что вы также можете использовать понимание списка в качестве альтернативы - '' [int (x) для x в s.split()] ''. Это хорошо и легко читается, хотя в этом (простом) случае я бы не сказал, что карта нечитаема. –

2

Вам необходимо сделать list(i), чтобы получить ['4','58','6'] как map в python 3 возвращает генератор вместо списка. Кроме того, как Lattyware отметил в комментарии первого ответа вам лучше сделать это:

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

Почему? [ответ jamylak] (http://stackoverflow.com/a/10106900/722121) объясняет лучше. –

+1

Он отправил передо мной и объяснил это. Так что я не сделал: p – mshsayem

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