Chào mừng trở lại.
Tôi muốn nói chuyện với bạn về một số chức năng hữu ích mà chúng tôi nhận được thực sự cho phép chúng tôi suy nghĩ trong một mô
hình lập trình chức năng.
Tên của các chức năng này là bộ lọc bản đồ.
Zip.
Và giảm bớt.
Và đây là những hàm rất, rất hữu ích, rất phổ biến mà bạn sẽ viết rất nhiều khi bạn là một lập trình viên
Python.
Vì vậy, hãy cùng khám phá chúng.
Đầu tiên, chúng ta sẽ bắt đầu với Bản đồ.
Và bản đồ thực sự cho phép chúng ta đơn giản hóa đoạn mã mà chúng ta có ở đây nhân hai.
Bạn thấy với bản đồ, tôi có sẵn nó dưới dạng một chức năng, như một chức năng tích hợp sẵn.
Và chúng ta thấy ở đây rằng chúng ta cung cấp cho tham số đầu tiên là một hàm, và sau đó tham số thứ hai là một tham số có thể lặp lại.
Một cách tốt để suy nghĩ về nó là chúng tôi muốn thực hiện một số loại hành động ở đây.
Vì vậy, một hàm và sau đó là dữ liệu mà chúng ta muốn thực hiện hành động.
Vì vậy, giả sử trong trường hợp của chúng ta, một, hai, ba.
Vậy chúng ta muốn thực hiện hành động nào?
Một hai ba.
Vâng, chúng ta muốn nhân với hai, vì vậy hãy nói rằng nhân.
Bằng hai.
Bây giờ tôi phải chuyển nó xuống vì chúng ta phải xác định hàm trước.
Và chạy nó như thế này.
Vì vậy, thay vì in cái này, chúng ta hãy làm.
In.
Như thế này nếu tôi chạy nó.
Tôi nhận được một đối tượng bản đồ tại vị trí bộ nhớ này.
Và MAP tự động cung cấp cho chúng ta đối tượng này mà nó đã tạo trong bộ nhớ này.
Vì vậy, để chúng tôi thực sự xem nó, chúng tôi phải chuyển nó thành một danh sách như thế này.
Vì vậy, nếu tôi chạy cái này.
Nó nói trên dòng cho đối tượng int'l là không thể lặp lại.
Chà, đó là bởi vì với bản đồ, chúng ta không cần thực hiện việc tạo danh sách này nữa ngoài việc thêm vào danh sách.
Bạn thấy đấy, điều tốt đẹp về bản đồ là tôi cung cấp cho nó một số dữ liệu và sau đó dữ liệu này được xử lý bởi điều
này.
Và tất cả những gì chúng ta cần làm với hàm bản đồ là có một hàm trả về.
Mục này nhân hai lần.
Vì vậy, thay vì có tất cả mã này, tất cả những gì chúng ta cần làm là trả về.
Mục.
Lần hai.
Vì vậy, hãy thay đổi tham số này thành mục.
Và xem mã chi tiết hơn một chút.
Vì vậy, với bản đồ, tôi nói, Này, tôi muốn bạn chạy chức năng này.
Nhân với hai.
Lưu ý ở đây rằng tôi thậm chí không có dấu ngoặc vì tôi không cần phải gọi nó là bản đồ làm điều đó cho tôi.
Map chỉ nói, Này, chỉ cần giao chức năng cho tôi, phần còn lại tôi sẽ lo.
Vì vậy, tôi không gọi hàm ở đây.
Bản đồ sẽ gọi chức năng cho tôi.
Tôi chỉ nói, này, khi tôi gọi bản đồ như thế này.
Tôi muốn bạn sử dụng chức năng này tại địa chỉ bộ nhớ này và sử dụng dữ liệu này.
Hãy nhớ mô hình lập trình chức năng của chúng tôi.
Chúng tôi có dữ liệu được xử lý, vì vậy chúng tôi tách hai dữ liệu đó ra.
Bây giờ, chức năng này sẽ lấy từng mục một trong các khoảng thời gian của chúng ta.
Trong trường hợp của chúng tôi, khoảng thời gian đầu tiên sẽ là một, sau đó hai, rồi ba.
Và sau đó tất cả những gì chúng ta cần làm là trả lại hiệu ứng mà chúng ta muốn có trên vật phẩm đó.
Trong trường hợp của chúng tôi, đó là hai.
Vì vậy, bằng cách làm này, bản đồ sẽ tự động chạy chức năng này cho chúng tôi và lặp qua tất cả các mục trong tệp có thể lặp
lại và trả về cho chúng tôi một đối tượng bản đồ mới mà chúng tôi sẽ chuyển đổi thành một danh sách nếu tôi chạy nó.
Tôi nhận được hai cho sáu?
Bây giờ, đây là phần gọn gàng.
Nếu tôi làm vậy, hãy nói danh sách của tôi và tôi nói, một, hai, ba.
Và tôi đã thay đổi danh sách của mình ở đây.
Như thế này.
Và cuối cùng, hãy in danh sách của tôi.
Nếu tôi bấm Chạy.
Bạn sẽ thấy rằng danh sách của tôi không thay đổi.
Nhớ lại?
Một chức năng thuần túy là một chức năng không ảnh hưởng đến thế giới bên ngoài.
Và bản đồ theo cách này cho phép chúng tôi tạo ra một danh sách hoàn toàn mới.
Điều đó không sửa đổi danh sách của tôi.
Vì vậy, danh sách của tôi là bất biến, phải không?
Chúng tôi không thay đổi nó.
Và tất cả những gì nó làm là chức năng bản đồ, xử lý nó và trả về một danh sách mới cho chúng tôi.
Nhưng chúng tôi không ảnh hưởng đến thế giới bên ngoài.
Không có tác dụng phụ trong chức năng này.
Chúng tôi chỉ đơn giản là nhân mục này với mục với hai, nhưng sẽ tạo ra một danh sách mới từ mục này.
Và mỗi khi chúng ta cung cấp cho nó cùng một đầu vào, nó sẽ dẫn đến cùng một đầu ra.
Rất, rất tuyệt.
Và bản đồ cực kỳ hữu ích vì bất cứ lúc nào chúng ta có thứ gì đó mà chúng ta có thể lặp lại và chúng
ta muốn thay đổi.
Giả sử chúng ta có email hoặc tên người dùng và chúng ta cần cập nhật tên người dùng, giả sử, tất cả đều là chữ in
hoa.
Trong trường hợp đó, chúng ta có thể lặp lại và sử dụng chức năng bản đồ, thay đổi tất cả các tên người dùng trong danh sách của chúng ta, giả sử là các
chữ cái viết hoa.
MAP sẽ là một trong những hàm mà bạn sử dụng rất nhiều trong sự nghiệp lập trình của mình.
Và tôi hy vọng bạn có thể thấy ở đây nó sạch sẽ và tốt đẹp như thế nào, một lần nữa, bằng cách sử dụng các mô hình lập trình chức năng.
Hãy chuyển sang phần tiếp theo.
Hãy nói về bộ lọc.
Tiếp theo.