2011-07-15 43 views
7

Ai đó có thể giúp tôi hiểu những gì đang xảy ra trong mã Python sau đây (python 3.2)? Tôi thực sự không biết gì ở đây.python - cùng một lệnh, kết quả khác nhau

import sys 
u = sys.stdin.readline() 
    # try entering the string "1 2 3" 
r = map(lambda t: int(t.strip()),u.split()) 
print(sum(r)) # prints 6 
print(sum(r)) # prints 0 ? 

Cảm ơn bạn.

Trả lời

14

map() bằng Python 3.x trả về một trình lặp, không phải danh sách. Đặt nó thông qua sum() lần đầu tiên tiêu thụ nó, không để lại gì cho lần thứ hai.

+2

Để thêm vào câu trả lời này: Nếu bạn muốn giữ kết quả dưới dạng danh sách, thay vào đó hãy làm 'r = list (map (...))'. – kindall

+2

@kindall thực sự, việc hiểu danh sách có thể sẽ sạch hơn –

+0

Điều đó chắc chắn đúng. Tất nhiên nó sẽ được sạch hơn để sử dụng ở nơi đầu tiên. :-) – kindall

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