Tôi đang đọc qua tài liệu Python để thực sự hiểu sâu về ngôn ngữ Python và đi qua chức năng lọc và bản đồ. Tôi đã sử dụng bộ lọc trước đây, nhưng không bao giờ bản đồ, mặc dù tôi đã thấy cả hai trong câu hỏi Python khác nhau ở đây trên SO.Python: Sự khác biệt giữa bộ lọc (chức năng, trình tự) và bản đồ (chức năng, trình tự)
Sau khi đọc về chúng trong hướng dẫn Python, tôi đang bối rối về sự khác biệt giữa hai. Ví dụ, từ 5.1.3. Functional Programming Tools:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
và
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
Những trông gần như giống hệt nhau trong chức năng đối với tôi, vì vậy tôi đã đi vào thiết bị đầu cuối để chạy Python tương tác và thử nghiệm ra trường hợp của riêng tôi. Tôi đã sử dụng map
cho cả hai trường hợp đầu tiên và thứ hai ở trên và đối với trường hợp đầu tiên (return x % 2 != 0 and x % 3 != 0
), nó trả về danh sách các boolean thay vì số.
Tại sao map
đôi khi trả về giá trị trả lại thực tế và boolean lần khác?
Ai đó có thể giải thích cho tôi chính xác sự khác biệt giữa map
và filter
?
có ý nghĩa bây giờ, tôi thấy như thế nào hạn bộ lọc cho thấy những gì các chức năng thực hiện so với bản đồ. – samrap
Trên thực tế, tên 'map()' cũng có ý nghĩa, trong một số trường khi bản đồ được sử dụng như một động từ, nó có nghĩa là tìm mối quan hệ tương ứng 1 đến 1. Chẳng hạn như trong toán học: 'bản đồ x để y' hoặc trong di truyền học: 'bệnh tiểu đường bản đồ để một gen'. Một điều tốt đẹp về 'Python' là như thế này: các tên thường có ý nghĩa. –
đó là một điểm tốt. Thật buồn cười như thế nào tương tự như các khía cạnh nhất định của lập trình là các ví dụ hàng ngày.Giống như tôi đang ở đại số 2 và chúng tôi đang học về các hàm f (x) và một nửa lớp được stumped nhưng ý tưởng là 100% tương tự như các hàm trong lập trình. – samrap