Cách sử dụng hàm map() trong Python
Tìm hiểu cách sử dụng hàm map() của Python. Nắm vững cách áp dụng các hàm cho các vòng lặp mà không cần viết vòng lặp và so sánh bản đồ với khả năng hiểu danh sách.
Tổng quan
Khi xử lý các bộ sưu tập dữ liệu, bạn thường sẽ cần áp dụng một phép chuyển đổi cụ thể cho từng mục trong một lần lặp. Ví dụ: chuyển đổi danh sách các số chuỗi thành số nguyên hoặc chuẩn hóa một mảng chuỗi cơ sở dữ liệu bằng cách chuyển đổi chúng thành chữ thường. Thay vì viết các vòng lặp `for` dài dòng, Python cung cấp một công cụ tích hợp có tên là `map()`.
Hàm `map(function, iterable)` chấp nhận một hàm chuyển đổi và một iterable làm đối số. Nó áp dụng hàm cho từng phần tử của iterable và trả về một đối tượng iterator (đối tượng `map`). Bởi vì nó được trả về dưới dạng một trình lặp, nên các phép tính được thực hiện một cách lười biếng: các phần tử chỉ được xử lý khi bạn lặp lại chúng, điều này giúp tiết kiệm bộ nhớ cho các tập dữ liệu lớn.
Để có được biểu diễn danh sách của đối tượng bản đồ ngay lập tức, bạn phải truyền kết quả bằng cách sử dụng hàm tạo `list()`: `list(map(func, data))`. Bạn có thể chuyển bất kỳ hàm tiêu chuẩn nào, hàm thư viện tiêu chuẩn (như `str` hoặc `len`) hoặc các hàm ẩn danh tùy chỉnh được khai báo bằng từ khóa `lambda` trực tiếp tới `map()` để thực thi nội tuyến.
Đầu ra mã & thực thi
Tập lệnh này minh họa việc sửa đổi các bộ sưu tập bằng cách sử dụng hàm map() với các phép biến đổi chuỗi, ánh xạ các mục trong danh sách thành số và sử dụng lệnh gọi lại lambda.
# 1. Map string conversion over a list of numbers
numbers = [1, 2, 3, 4]
string_numbers = list(map(str, numbers))
print("Mapped to strings:", string_numbers)
# 2. Square numbers using a lambda function inside map()
squared = list(map(lambda x: x**2, numbers))
print("Squared numbers:", squared)
# 3. Apply custom logic function to items
def normalize_name(name):
return name.strip().capitalize()
names = [" alice", "BOB ", " charlie "]
clean_names = list(map(normalize_name, names))
print("Clean names list:", clean_names)Mapped to strings: ['1', '2', '3', '4']
Squared numbers: [1, 4, 9, 16]
Clean names list: ['Alice', 'Bob', 'Charlie']Triển khai từng bước
- Xác định hàm chuyển đổi mà bạn muốn áp dụng cho mọi phần tử trong bộ sưu tập.
- Gọi map(function_name, iterable) để tạo một trình lặp lười biếng của các phần tử được chuyển đổi.
- Gói lệnh gọi map() bên trong list() nếu bạn cần truy cập ngay vào tất cả các phần tử dưới dạng danh sách tiêu chuẩn.
- Kết hợp map() với các hàm lambda để chuyển đổi nội tuyến một lần, nhanh chóng.
Câu hỏi thường gặp
Map() có tốt hơn khả năng hiểu danh sách không?
Việc hiểu danh sách thường được cộng đồng coi là dễ đọc hơn và Pythonic hơn. Tuy nhiên, map() có thể nhanh hơn khi áp dụng hàm dựng sẵn hiện có (như map(str, list)) vì nó chạy các vòng lặp mã C được tối ưu hóa.
Map() có thể thực hiện nhiều lần lặp không?
Vâng! Nếu hàm chuyển đổi có nhiều đối số, bạn có thể chuyển nhiều lần lặp cho map(). Ví dụ: map(lambda x, y: x + y, list1, list2) sẽ thêm các phần tử theo cặp.
Chủ đề liên quan
Tìm hiểu cách sử dụng hàm lambda trong Python. Nắm vững các hàm ẩn danh, lệnh gọi lại nội tuyến và sắp xếp dữ liệu danh sách bằng khóa lambda.
Cách sử dụng tính năng hiểu danh sách trong PythonTìm hiểu cách sử dụng tính năng hiểu danh sách trong Python. Viết các vòng lặp ngắn gọn, áp dụng các bộ lọc có điều kiện và xây dựng ma trận bằng cú pháp trực quan rõ ràng.
Cách sử dụng hàm filter() trong PythonTìm hiểu cách sử dụng hàm filter() của Python để trích xuất các phần tử từ bộ sưu tập. So sánh bộ lọc với khả năng hiểu danh sách và lệnh gọi lại lambda.
Tài nguyên Python được đề xuất
Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.
Hàm Python
Làm chủ các hàm Python. Tìm hiểu cách viết mã có thể sử dụng lại bằng cách sử dụng def, xác định đối số, trả về giá trị và hiểu phạm vi cục bộ và toàn cầu.
Bảng tóm tắt các chức năng của mô-đun toán học Python
Hướng dẫn tham khảo nhanh thư viện chuẩn toán Python. Tìm hiểu cách sử dụng các hàm lượng giác, logarit, làm tròn và số học.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.