Computer >> Máy Tính >  >> Lập trình >> Python

Chức năng bản đồ Python:Hướng dẫn từng bước

Hàm map () trong Python thực thi một hàm trên từng mục trong tập hợp, chẳng hạn như danh sách hoặc tập hợp. Hàm map () chấp nhận một hàm và một đối tượng để áp dụng mà hàm sẽ hoạt động dưới dạng đối số.


Khi bạn đang làm việc với danh sách các mục bằng Python, bạn có thể muốn thực hiện một chức năng cụ thể trên từng mục đó.

Đó là nơi mà bản đồ hàm tích hợp sẵn trong Python () xuất hiện. Hàm bản đồ Python thực thi một hàm trên tất cả các phần tử bên trong một đối tượng có thể lặp lại, chẳng hạn như danh sách và trả về các đối tượng bản đồ.

Trong hướng dẫn này, sử dụng một loạt các ví dụ, chúng tôi thảo luận về cách sử dụng map () hàm trong Python.

Đối tượng lặp lại trong Python

Các đối tượng có thể lặp lại là các mục chứa một số lượng giá trị có thể đếm được và có thể được duyệt qua. Danh sách, từ điển, bộ giá trị và bộ đều là các đối tượng có thể lặp lại trong Python vì chúng có thể chứa nhiều giá trị và có thể được duyệt qua.

Giả sử bạn có một danh sách tên học sinh mà bạn muốn lưu trữ. Thay vì lưu trữ những tên này trong nhiều biến Python, bạn có thể khai báo một mảng để lưu trữ các giá trị:

students = ["Lucy", "Bill", "Graham", "Tommy", "Leslie"]

students của chúng tôi biến chứa một danh sách, là một đối tượng có thể lặp lại. Điều này có nghĩa là chúng ta có thể duyệt qua các mục trong danh sách.

Cú pháp hàm bản đồ Python

Hàm map () chuyển từng phần tử trong danh sách và thực thi một chức năng trên mỗi phần tử. map () được tích hợp sẵn trong Python. Điều này có nghĩa là bạn không cần nhập bất kỳ thư viện nào để sử dụng phương thức map ().

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

Python map () là một hàm bậc cao hơn có thể được sử dụng để áp dụng một hàm cụ thể cho nhiều phần tử trong một đối tượng có thể lặp lại. Cú pháp cho Python map () chức năng như sau:

map(function, iterable)

Đối số đầu tiên của map () function take là hàm . Đây là hàm sẽ được thực thi trên mọi mục trong tệp có thể lặp lại. Có thể lặp lại là đối tượng sẽ được ánh xạ, chẳng hạn như danh sách, bộ, từ điển hoặc tập hợp.

Cách sử dụng hàm bản đồ trong Python

Giả sử bạn là quản trị viên tại một trường học được giao nhiệm vụ tạo danh sách học sinh đầy đủ.

Chúng tôi quyết định in ra danh sách tên học sinh với lớp của mỗi học sinh được liệt kê bên cạnh tên của họ. Điều này sẽ tránh nhầm lẫn nếu hai học sinh ở hai lớp khác nhau trùng tên.

Đây là một ứng dụng hoàn hảo của hàm map () trong Python. Chúng ta có một hàm có thể lặp lại mà chúng ta muốn thực thi một hàm. Hàm sẽ hợp nhất tên của học sinh với lớp của họ. Đây là chương trình có thể được sử dụng để hợp nhất tên của học sinh với cấp lớp của họ:

def mergeNamesAndGrades(name):
	return name + " First Grade"

students = ["Lucy", "Bill", "Graham", "Tommy", "Leslie"]
student_roster = map(mergeNamesAndGrades, students)

Trên hai dòng đầu tiên, chúng tôi khai báo một hàm Python có tên là mergeNamesAndGrades . Chức năng này kết hợp tên của mỗi học sinh với Lớp đầu tiên .

Sau đó, trên dòng tiếp theo, chúng tôi xác định danh sách học sinh trong trường của chúng tôi. Có năm sinh viên trong danh sách của chúng tôi.

Bản đồ () hàm được áp dụng cho nội dung của student_roster Biến Python. Hàm map () nhận hai đối số:hàm (trong trường hợp này là mergeNamesAndGrades) và đối tượng có thể lặp (sinh viên).

Phương thức map () áp dụng hàm mergeNamesAndGrades () cho từng sinh viên trong danh sách của chúng tôi.

Chuyển đổi một bản đồ Python thành một danh sách

Tuy nhiên, chương trình của chúng tôi vẫn chưa hoàn thành. Bản đồ () hàm trả về một đối tượng được ánh xạ, không phải là danh sách đầy đủ của chúng ta. Nếu chúng tôi in ra student_roster của mình ngay bây giờ, mã của chúng tôi sẽ trả về một đối tượng được ánh xạ như thế này:

<map object at 0x7f2c74103890>

Đầu ra này được tạo bởi vì map () hàm trả về đối tượng tùy chỉnh của riêng nó, thay vì một danh sách. Vì vậy, nếu chúng ta muốn in ra danh sách tên học sinh, chúng ta cần chuyển đổi student_roster biến thành một danh sách. Đây là mã chúng tôi có thể sử dụng để thực hiện hành động này:

print(list(student_roster))

Mã của chúng tôi trả về danh sách Python sau:

['Lucy First Grade', 'Bill First Grade', 'Graham First Grade', 'Tommy First Grade', 'Leslie First Grade']

Hãy xem một ví dụ khác. Giả sử rằng chúng tôi muốn chuyển đổi tên và điểm của mọi học sinh thành chữ hoa cho danh sách học sinh của chúng tôi. Chúng tôi có thể sử dụng mã sau để thay đổi các trường hợp của tên và điểm của học sinh:

def changeCase(name):
	return name.upper()

student_roster = ['Lucy First Grade', 'Bill First Grade', 'Graham First Grade', 'Tommy First Grade', 'Leslie First Grade']
final_student_roster = map(changeCase, student_roster)
print(list(final_student_roster))

Mã của chúng tôi trả về một danh sách mà chúng tôi có thể lặp lại:

['LUCY FIRST GRADE', 'BILL FIRST GRADE', 'GRAHAM FIRST GRADE', 'TOMMY FIRST GRADE', 'LESLIE FIRST GRADE']

Trong ví dụ này, chúng tôi đã định nghĩa một hàm có tên là changeCase. Hàm này đã đổi tên từng học sinh thành chữ hoa. Chúng tôi đã sử dụng Python upper () chức năng chuyển đổi trường hợp của mỗi tên.

Chương trình của chúng tôi đã sử dụng map () hàm để gọi changeCase () trên mỗi đối tượng trong student_roster có thể lặp lại của chúng tôi . Cuối cùng, chương trình của chúng tôi đã trả lại danh sách sửa đổi tên học sinh bằng chữ in hoa.

Hàm bản đồ Python với Lambda

Bản đồ Python () có thể được sử dụng với lambda để làm cho mã của chúng tôi hiệu quả hơn. Trong các ví dụ trên, chúng tôi đã khai báo một hàm mới để thay đổi hàm có thể lặp lại của chúng tôi theo một cách nhất định.

Nhưng nếu chúng ta chỉ muốn thực hiện một hành động trên một đối tượng có thể lặp lại một lần, thì không cần thiết phải khai báo một hàm mới. Thay vào đó, chúng ta có thể sử dụng hàm lambda trong Python, là một hàm nhỏ, ẩn danh.

Các hàm Lambda có thể được sử dụng với map () cho các chức năng nhỏ mà chúng tôi không muốn xác định một chức năng mới.

Vì các hàm lambda ngắn gọn hơn các hàm thông thường, bạn nên cố gắng sử dụng chúng khi có thể. Sử dụng các hàm lambda cho các hàm đơn giản sẽ giúp cải thiện khả năng đọc mã của bạn.

Dưới đây là một ví dụ về lambda được sử dụng để chuyển đổi trường hợp của danh sách tên sinh viên thành chữ hoa, giống như chúng tôi đã làm ở trên:

student_roster = ['Lucy First Grade', 'Bill First Grade', 'Graham First Grade', 'Tommy First Grade', 'Leslie First Grade']
final_student_roster = map(lambda s: s.upper(), student_roster)
print(list(final_student_roster))

Chúng tôi đã không khai báo một hàm mới để chuyển đổi các trường hợp tên học sinh của chúng tôi thành chữ hoa. Thay vào đó, chúng tôi sử dụng lambda s:s.upper () , là một chức năng nhỏ, ẩn danh sẽ chuyển đổi các trường hợp tên học sinh của chúng tôi.

Mã của chúng tôi trả về như sau:

['LUCY FIRST GRADE', 'BILL FIRST GRADE', 'GRAHAM FIRST GRADE', 'TOMMY FIRST GRADE', 'LESLIE FIRST GRADE']

Kết luận

Bản đồ Python () hàm có thể được sử dụng để áp dụng một hàm cụ thể cho tất cả các phần tử trong một đối tượng có thể lặp lại. Ví dụ:bạn có thể sử dụng map () để chuyển đổi các trường hợp của danh sách chuỗi thành chữ hoa. Hoặc, bạn có thể sử dụng hàm map () nhân danh sách các số với một số lượng nhất định.

Trong hướng dẫn này, chúng tôi đã thảo luận về cách bạn có thể sử dụng map () trong Python để áp dụng một hàm cho tất cả các phần tử trong một đối tượng có thể lặp lại. Chúng tôi cũng đã thảo luận về cách bạn có thể sử dụng hàm lambda của Python với map () để tạo mã hiệu quả hơn.

Giờ đây, bạn đã được trang bị kiến ​​thức Python cần thiết để bắt đầu sử dụng map () như một người chuyên nghiệp.