2012-04-11 36 views
5

Tôi đang cố gắng chuyển đổi giá trị của danh sách bằng cách sử dụng chức năng map nhưng tôi nhận được kết quả lạ.Sự cố với bản đồ()

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

cho:

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

tại sao nó không quay trở lại [ '4', '58', '6']?

+0

Bạn đã thử in (str (i)) chưa? – Soader03

+0

Làm việc cho tôi như mong đợi, bạn có thể cho chúng tôi một số ngữ cảnh không? Phiên bản Python? Bạn đang sử dụng 2.x hoặc 3.x? – KurzedMetal

+0

Tôi đang sử dụng python 3.2.2, không có ngữ cảnh tại thời điểm này. – Sergei

Trả lời

9

Bạn đang sử dụng python 3 trả về máy phát thay vì danh sách.

Gọi list(x) trên biến sau khi bạn gán cho trình tạo bản đồ.

+4

Điều đáng chú ý là bạn cũng có thể sử dụng một danh sách hiểu như là một thay thế - '' [int (x) cho x trong s.split()] ''. Điều này là tốt đẹp và dễ đọc, mặc dù trong trường hợp (đơn giản) này, tôi sẽ không nói rằng bản đồ là không thể đọc được. –

2

Bạn cần làm list(i) để nhận ['4','58','6']map trong python 3 trả về trình tạo thay vì danh sách. Ngoài ra, như Lattyware đã chỉ ra nhận xét của câu trả lời đầu tiên bạn nên làm điều này:

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

Tại sao? [Câu trả lời của jamylak] (http://stackoverflow.com/a/10106900/722121) giải thích tốt hơn. –

+1

Ông đã đăng trước tôi và giải thích nó. Vì vậy, tôi đã không: p – mshsayem

Các vấn đề liên quan