Python tương hỗ quy mô lập trình tính năng được cho phép bạn xác lập những tác vụ dưới dạng giám sát những công dụng theo chương trình. Bạn hoàn toàn có thể coi những hàm Python như những đối tượng người dùng : một hàm hoàn toàn có thể lấy một hàm khác làm tham số và trả về một hàm khác .
Hàm map ( ) nhận một hàm làm đối số và được cho phép bạn vận dụng nó cho tổng thể những mục trong một chuỗi .
Đến cuối hướng dẫn này, bạn sẽ có thể sử dụng hàm map () trong Python – để viết lại các vòng lặp dài dòng và các phần hiểu danh sách. Bạn sẽ viết mã một số ví dụ để hiểu các cách khác nhau mà bạn có thể sử dụng hàm map ().
Tóm Tắt
Cách áp dụng một hàm cho các phần tử của danh sách Python
Hãy mở màn cuộc bàn luận của tất cả chúng ta bằng một ví dụ. 👩 🏫
Ở đây nums là một list những số .
nums = [2,4,3,7]
Tiếp theo, hãy xem xét hàm self_pow ( ). Hàm self_pow ( ) nhận một số ít làm đối số và trả về số được nâng lên thành lũy thừa của chính số đó : n * * n .
Trong Python, * * là toán tử lũy thừa. a * * b trả về giá trị của a được nâng lên lũy thừa b, ab .
def self_pow(n): return n**n
VIỆC CẦN LÀM : Để tạo một list nums_pow mới bằng cách vận dụng hàm self_pow ( ) cho mọi thành phần trong list nums .
Sử dụng cho Vòng lặp
Để làm điều này, bạn hoàn toàn có thể sử dụng vòng lặp for trong Python :
- Đối với mọi số trong danh sách nums, hãy gọi hàm self_pow () với đối số là num.
- Nối kết quả của lời gọi hàm vào danh sách mới nums_pow.
nums_pow = [] for num in nums: nums_pow.append(self_pow(num)) print(nums_pow)
Trong đầu ra, mọi số num được nâng lên thành chính nó. Các thành phần trong list nums_pow như sau : 22, 44, 33,77 .
Output [4, 256, 27, 823543]
Sử dụng tính năng hiểu danh sách
Bạn hoàn toàn có thể làm cho điều này ngắn gọn bằng cách sử dụng năng lực hiểu list. Từ vòng lặp for rõ ràng ở trên, tất cả chúng ta hoàn toàn có thể xác lập biểu thức đầu ra và list để lặp qua .
Sau đó, chúng tôi hoàn toàn có thể sửa đổi biểu thức hiểu list chung :
new_list = [
Biểu thức hiểu list để tạo list nums_pow như sau :
nums_pow = [self_pow(num) for num in nums] print(nums_pow)
Đầu ra giống như tác dụng từ việc sử dụng vòng lặp for, như mong đợi .
Output [4, 256, 27, 823543]
Thay vì hiểu vòng lặp và list, bạn hoàn toàn có thể sử dụng hàm map ( ) trong Python với cú pháp ngắn gọn và giúp vận dụng hàm cho toàn bộ những mục trong một tệp hoàn toàn có thể lặp lại. Hãy mở màn bằng cách học cú pháp của hàm map .
Bản đồ Python () Cú pháp hàm
Cú pháp chung để sử dụng hàm map ( ) trong Python như sau :
map(function, iterable_1,[iterable_2,...,iterable_n])
Hàm map ( ) nhận vào tối thiểu hai đối số, một hàm và một hàm hoàn toàn có thể lặp .
Trong cú pháp trên :
- hàm biểu thị một hàm Python hoặc nói chung, bất kỳ Python nào có thể gọi được. Điều này bao gồm các hàm, lớp, phương thức cá thể và lớp do người dùng định nghĩa và tích hợp sẵn, v.v.
- có thể lặp lại là bất kỳ Python hợp lệ nào có thể lặp lại, chẳng hạn như danh sách, tuple và chuỗi.
- Hàm map () được áp dụng và hàm được sử dụng cho mọi phần tử trong tệp có thể lặp lại.
Hàm map ( ) trả về cái gì ?
Nó trả về một đối tượng người dùng map. Sau đó, bạn hoàn toàn có thể truyền đối tượng người dùng map vào một list bằng cú pháp : list ( map ( tính năng, hoàn toàn có thể lặp ) ) .
Tùy thuộc vào trường hợp sử dụng, bạn hoàn toàn có thể truyền nó thành một tuple Python .
Bây giờ bạn đã học được cú pháp của hàm map ( ) trong Python, hãy khởi đầu viết mã những ví dụ .
Bạn nên có Python 3. x để làm theo hướng dẫn này. Ngoài ra, bạn hoàn toàn có thể chạy những đoạn mã trong trình chỉnh sửa Python trực tuyến của techpoe.com .
Cách sử dụng hàm map () với các hàm do người dùng xác định
# 1. Trước đây, chúng tôi đã vận dụng hàm self_pow ( ) cho mọi số trong list nums. Trong cú pháp cho hàm map ( ), tất cả chúng ta hoàn toàn có thể chuyển vào hàm self_pow và list nums làm đối số .
Lưu ý : Bạn chỉ nên chỉ định tên của hàm chứ không phải lệnh gọi hàm. Sử dụng self_pow chứ không phải self_pow ( ) .
Hàm map ( ) trả về một đối tượng người tiêu dùng map .
print(map(self_pow,nums))
Sau đó, tất cả chúng ta hoàn toàn có thể truyền đối tượng người tiêu dùng map vào một list bằng cách sử dụng hàm list ( ), như hình dưới đây .
nums_pow = list(map(self_pow,nums)) print(nums_pow)
Đây là tác dụng đầu ra là mọi num trong nums được ánh xạ tới numnum trong list nums_pow .
Output [4, 256, 27, 823543]
# 2. Hãy xem xét hàm inch_to_cm ( ) sau đây quy đổi inch sang cm. 1 inch = 2,54 cm .
def inch_to_cm(inch): return inch*2.54
Để quy đổi những giá trị inch trong list inch sang cm, bạn hoàn toàn có thể sử dụng hàm map ( ) như được hiển thị trong ô mã bên dưới .
inches = [5.54,3.4,1,25,8.2] cms = list(map(inch_to_cm,inches)) print(cms)
Danh sách cms chứa những giá trị inch được bộc lộ bằng cm .
Output [14.0716, 8.636, 2.54, 63.5, 20.828]
Cách sử dụng hàm map () với các hàm tích hợp
Trong phần này, tất cả chúng ta sẽ học cách sử dụng map ( ) với những hàm tích hợp trong Python .
# 1. Chuỗi list là list những ngôn từ lập trình. Bạn muốn tạo một list mới string_upper chứa những chuỗi ngôn từ lập trình ở dạng chữ hoa .
strings = ['JavaScript','Rust','Python','Go']
Phương thức chuỗi tích hợp. upper ( ) hoạt động giải trí trên một chuỗi và trả về một bản sao được định dạng bằng chữ hoa .
strings_upper = list(map(str.upper,strings)) print(strings_upper)
Danh sách string_upper gồm có những chuỗi trong chuỗi list được định dạng bằng chữ hoa .
Output ['JAVASCRIPT', 'RUST', 'PYTHON', 'GO']
# 2. Hàm len () tích hợp sẵn trong Python nhận một chuỗi làm đối số và trả về độ dài của nó. Để tìm độ dài của mỗi chuỗi trong danh sách chuỗi, chúng ta có thể sử dụng hàm map () và áp dụng hàm độ dài trên mỗi chuỗi, như hình dưới đây.
strings_len = list(map(len,strings)) print(strings_len)
Output [10, 4, 6, 2]
# 3. Bạn hoàn toàn có thể sử dụng hàm map ( ) với những bộ sưu tập khác như bộ giá trị .
Ví dụ sau đây chứa một bộ tài liệu chứa thông tin về số phòng ngủ, diện tích quy hoạnh và thành phố mà một ngôi nhà tọa lạc .
Trong Python, hàm type ( ) trả về kiểu tài liệu của bất kể đối tượng người tiêu dùng Python nào. Để có được kiểu tài liệu của toàn bộ những mục trong bộ tuple này, bạn hoàn toàn có thể sử dụng hàm map ( ) để gọi hàm loại trên mỗi bộ giá trị .
house = (2,758.5,'Bangalore') house_elt_type = tuple(map(type,house)) print(house_elt_type)
Chúng tôi đã truyền đối tượng người tiêu dùng map thành một bộ tuple. Bạn cũng hoàn toàn có thể truyền vào list hoặc bất kỳ bộ sưu tập nào khác .
Trong tác dụng đầu ra bên dưới, tất cả chúng ta thấy rằng những kiểu tài liệu của 2, 758.5 và Bangalore, đã được suy ra là ‘ int ’, ‘ float ’ và ‘ str ’, tương ứng .
Output (, , )
# 4. Trong Python, bạn hoàn toàn có thể nhập những mô-đun tích hợp sẵn và sử dụng những tính năng được xác lập trong những mô-đun .
Để tính căn bậc hai của mọi số trong list nums, bạn hoàn toàn có thể sử dụng hàm căn bậc hai sqrt từ mô-đun toán học .
import math nums = [30,90,34,45,97] nums_sqrt = list(map(math.sqrt,nums)) print(nums_sqrt)
Output [5.477225575051661, 9.486832980505138, 5.830951894845301, 6.708203932499369, 9.848857801796104]
Kết quả đầu ra trên rất khó để nghiên cứu và phân tích cú pháp và theo dõi. Bạn hoàn toàn có thể muốn làm tròn mỗi giá trị căn bậc hai, hai chữ số thập phân .
Cách làm tròn số dấu chấm động bằng Python
Hãy xác lập một hàm round_2 ( ) nhận một giá trị dấu phẩy động và làm tròn nó đến hai chữ số thập phân .
def round_2(num): return round(num,2)
Bây giờ, bạn hoàn toàn có thể sử dụng hàm map ( ) với round_2 và list nums_sqrt .
nums_sqrt_round = list(map(round_2,nums_sqrt)) print(nums_sqrt_round)
Output [5.48, 9.49, 5.83, 6.71, 9.85]
Bạn cũng hoàn toàn có thể sử dụng những hàm map ( ) lồng nhau, trong đó hàm map bên trong được sử dụng để tính danh sách căn bậc hai nums_sqrt và hàm map bên ngoài triển khai thao tác làm tròn .
nums_sqrt_round = list(map(round_2,list(map(math.sqrt,nums)))) print(nums_sqrt_round)
Output [5.48, 9.49, 5.83, 6.71, 9.85]
Kết quả đầu ra giống hệt nhau trong cả hai cách tiếp cận trên. Tuy nhiên, bạn nên bảo vệ rằng mã hoàn toàn có thể đọc được và hoàn toàn có thể bảo dưỡng khi lồng những hàm như được hiển thị ở trên .
Cách sử dụng hàm map () với các hàm Lambda
Trong những phần trước, bạn đã học cách sử dụng hàm map ( ) trong Python với những hàm cài sẵn và do người dùng định nghĩa. Bây giờ bạn sẽ học cách sử dụng hàm map ( ) với những hàm lambda, ẩn danh trong Python .
Đôi khi, bạn sẽ có một hàm mà phần thân của nó chỉ chứa một dòng mã và bạn hoàn toàn có thể chỉ cần sử dụng hàm một lần và không tham chiếu nó ở nơi khác trong chương trình. Bạn hoàn toàn có thể định nghĩa những hàm như một hàm lambda trong Python .
Lưu ý : lambda args : biểu thức là cú pháp chung để sử dụng một hàm lambda trong Python .
# 1. Hãy xem xét những chuỗi list sau đây. Giả sử bạn muốn lấy một list string_rev – chứa một bản sao đảo ngược của mỗi chuỗi .
strings = ['JavaScript','Rust','Python','Go']
Chúng ta hoàn toàn có thể đảo ngược một chuỗi Python bằng cách sử dụng giải pháp cắt chuỗi .
Lưu ý : Đây là tổng quát của biểu thức cắt chuỗi str [ start : stop : step ] .
– Không có giá trị bắt đầu và dừng, lát cắt bắt đầu ở đầu chuỗi và kéo dài đến cuối chuỗi.
– Giá trị âm của bước cung cấp cho các lát cắt bắt đầu từ cuối chuỗi.
– Do đó, str[::-1] trả về một bản sao đảo ngược của str.
Bạn hoàn toàn có thể sử dụng hàm lambda này : lambda x : x [ :: – 1 ] Bên trong công dụng map, như hình dưới đây .
strings_rev = list(map(lambda x:x[::-1],strings)) print(strings_rev)
Như với những ví dụ khác, chúng tôi truyền đối tượng người tiêu dùng map vào một list. Trong đầu ra, tất cả chúng ta thấy rằng mỗi chuỗi trong chuỗi list đã được đảo ngược .
Output ['tpircSavaJ', 'tsuR', 'nohtyP', 'oG']
# 2. Trong phần trước, tất cả chúng ta đã tính căn bậc hai của mọi số trong list số và sau đó làm tròn mỗi giá trị căn bậc hai đến hai chữ số thập phân .
Chúng tôi đã sử dụng hàm round_2 ( ) để triển khai việc này. Hãy viết lại hàm round_2 ( ) dưới dạng một hàm lambda và sử dụng nó với hàm map ( ) được miêu tả bên dưới .
nums_sqrt_round_l =list(map(lambda num:round(num,2),nums_sqrt)) print(nums_sqrt_round_l)
Như đã thấy bên dưới, đầu ra giống hệt với những gì tất cả chúng ta thu được khi sử dụng hàm round_2 ( ) .
Output [5.48, 9.49, 5.83, 6.71, 9.85]
Cách sử dụng hàm map () với nhiều lặp lại
Trong những ví dụ đã thấy, chúng tôi đã vận dụng một hàm trên tổng thể những mục của đúng chuẩn một mục hoàn toàn có thể lặp lại .
Đôi khi, tất cả chúng ta hoàn toàn có thể có những hàm có hai hoặc nhiều đối số. Trong trường hợp này, mỗi đối số được tàng trữ trong một list hoặc bất kỳ bộ sưu tập nào tương tự như .
Chúng ta cũng hoàn toàn có thể sử dụng hàm map ( ) trong Python với nhiều list .
# 1. Hãy xem xét vùng hàm sau ( ) gật đầu chiều dài và chiều rộng làm đầu vào và trả về diện tích quy hoạnh, chiều dài * chiều rộng .
def area(length,breadth): return length*breadth
Chiều dài và chiều rộng của những hình chữ nhật khác nhau được tàng trữ trong hai list riêng không liên quan gì đến nhau, chiều dài và chiều rộng tương ứng .
lengths = [4,8,10,18] breadths = [9,4,6,11]
Chúng ta hoàn toàn có thể sử dụng hàm map ( ) để vận dụng hàm diện tích quy hoạnh cho những list trên bằng cách chuyển vào cả list độ dài và độ rộng .
areas = list(map(area,lengths,breadths)) print(areas)
Bởi vì vùng hàm đồng ý hai đối số, giá trị độ dài và độ rộng được sử dụng từ độ rộng độ dài list, tương ứng .
Output [36, 32, 60, 198]
# 2. Mô-đun toán học Python có hàm log giúp tất cả chúng ta tính logarit của một số ít với bất kể cơ số nào .
Lưu ý : log ( x, base ) trả về giá trị của log x cho cơ sở được chỉ định bởi cơ sở giá trị, log cơ số x. Nếu cơ số không được chỉ định, giá trị cơ số mặc định là e ( log tính logarit tự nhiên ) .
Trong ví dụ này :
- Danh sách x tương ứng với các giá trị mà bạn muốn tính logarit.
- Danh sách cơ số chứa tất cả các giá trị cơ số sẽ được sử dụng trong tính toán logarit.
x = [2,6,12,10] base = [2,3,2,5]
Chúng ta có thể sử dụng hàm map () trong Python với math.log, các danh sách, x và base để có được danh sách mới log_x, như sau.
log_x = list(map(math.log,x,base)) print(log_x)
Đây là tác dụng đầu ra .
Output [1.0, 1.6309297535714573, 3.5849625007211565, 1.4306765580733933]
Sự kết luận
Dưới đây là tóm tắt những gì bạn đã học được trong hướng dẫn này :
- Hàm map () trong Python nhận vào ít nhất hai đối số: một hàm và một có thể lặp, với ánh xạ cú pháp (hàm, (các) có thể lặp).
- Hàm có thể là bất kỳ hàm Python hợp lệ nào có thể gọi được.
- Khi hàm nhận k đối số, hãy sử dụng hàm map () với hàm và mỗi đối số trong số k đối số trong một hàm có thể lặp.
Tiếp theo, học cách thao tác với những bộ trong Python .
Source: https://final-blade.com
Category : Kiến thức Internet