Làm cách nào tôi có thể thay thế vòng lặp trong Python?
Phương thức str.replace(old, new [, count])2 thay thế mỗi lần xuất hiện khớp của ký tự/văn bản cũ trong chuỗi bằng ký tự/văn bản mới Show
Ví dụ
thay thế () Cú phápCú pháp của nó là str.replace(old, new [, count]) thay thế () Tham sốPhương thức str.replace(old, new [, count])2 có thể nhận tối đa 3 tham số
Ghi chú. Nếu số lượng không được chỉ định, phương thức str.replace(old, new [, count])2 sẽ thay thế tất cả các lần xuất hiện của chuỗi con cũ bằng chuỗi con mới thay thế () Giá trị trả vềPhương thức str.replace(old, new [, count])2 trả về một bản sao của chuỗi trong đó chuỗi con cũ được thay thế bằng chuỗi con mới. Chuỗi ban đầu không thay đổi Bạn đã bao giờ nhìn vào mã của mình và thấy một thác nước gồm các vòng lặp chưa? Đối với các vòng lặp là một con dao của quân đội Thụy Sĩ để giải quyết vấn đề, nhưng khi nói đến việc quét mã để đọc nhanh những gì bạn đã làm, chúng có thể khiến bạn choáng ngợp Ba kỹ thuật — ánh xạ, bộ lọc và thu nhỏ — giúp khắc phục chứng cuồng vòng lặp for bằng cách đưa ra các giải pháp thay thế chức năng mô tả lý do tại sao bạn đang lặp lại Chúng tôi sẽ giới thiệu ngắn gọn từng kỹ thuật trong số ba kỹ thuật, làm nổi bật sự khác biệt về cú pháp giữa chúng trong JavaScript và Python, sau đó đưa ra các ví dụ về cách chuyển đổi vòng lặp for phổ biến Bản đồ, Bộ lọc và Giảm là gì?Xem lại mã đã viết trước đây của mình, tôi nhận ra rằng 95% thời gian khi lặp qua các chuỗi hoặc mảng tôi thực hiện một trong các thao tác sau. ánh xạ một chuỗi các câu lệnh tới từng giá trị, lọc các giá trị đáp ứng các tiêu chí cụ thể hoặc giảm tập dữ liệu thành một giá trị tổng hợp duy nhất Với cái nhìn sâu sắc đó, ba phương pháp này là sự công nhận — và triển khai — rằng lý do bạn lặp qua một lần lặp thường thuộc một trong ba loại chức năng này
Trong Python, ba kỹ thuật tồn tại dưới dạng các hàm, thay vì các phương thức của lớp Array hoặc String. Điều này có nghĩa là thay vì viết str.replace(old, new [, count])6 bạn sẽ viết str.replace(old, new [, count])7 Ngoài ra, mỗi kỹ thuật sẽ yêu cầu một chức năng được thông qua, chức năng này sẽ được thực thi cho từng mục. Thông thường, hàm này được viết dưới dạng hàm ẩn danh (được gọi là hàm mũi tên béo trong JavaScript). Tuy nhiên, trong Python bạn thường thấy các biểu thức lambda được sử dụng Cú pháp giữa biểu thức lambda và hàm mũi tên thực sự khá giống nhau. Hoán đổi str.replace(old, new [, count])8 lấy str.replace(old, new [, count])9 và đảm bảo sử dụng từ khóa // JavaScript Arrow Function const square = number => number * number; // Python Lambda Expression square = lambda number: number * number0 và phần còn lại gần như giống hệt nhau // JavaScript Arrow Function const square = number => number * number; // Python Lambda Expression square = lambda number: number * number Một điểm khác biệt chính giữa các hàm mũi tên và biểu thức lambda là các hàm mũi tên có thể mở rộng thành các hàm toàn diện với nhiều câu lệnh trong khi các biểu thức lambda bị giới hạn ở một biểu thức duy nhất được trả về. Do đó, khi sử dụng // JavaScript Arrow Function const square = number => number * number; // Python Lambda Expression square = lambda number: number * number1, def inefficientSquare(number): result = number * number return resultmap(inefficientSquare, my_list0 hoặc def inefficientSquare(number): result = number * number return resultmap(inefficientSquare, my_list1 nếu bạn cần thực hiện nhiều thao tác trên từng mục, hãy xác định chức năng của bạn trước rồi đưa vào def inefficientSquare(number): result = number * number return resultmap(inefficientSquare, my_listThay thế vòng lặp Được rồi, vào những thứ tốt. Dưới đây là ba ví dụ về các vòng for phổ biến sẽ được thay thế bằng map, filter và reduce. Lời nhắc lập trình của chúng tôi. Tính tổng các số lẻ bình phương trong một danh sách Đầu tiên, ví dụ với các vòng for cơ bản. Ghi chú. Điều này hoàn toàn là để trình diễn và có thể được cải thiện ngay cả khi không có bản đồ/bộ lọc/thu nhỏ numbers = [1,2,3,4,5,6] odd_numbers = [] squared_odd_numbers = [] total = 0# filter for odd numbers for number in numbers: if number % 2 == 1: odd_numbers.append(number)# square all odd numbers for number in odd_numbers: squared_odd_numbers.append(number * number)# calculate total for number in squared_odd_numbers: total += number# calculate average Hãy chuyển đổi từng bước thành một trong các chức năng from functools import reduce numbers = [1,2,3,4,5,6] odd_numbers = filter(lambda n: n % 2 == 1, numbers) squared_odd_numbers = map(lambda n: n * n, odd_numbers) total = reduce(lambda acc, n: acc + n, squared_odd_numbers) Có một vài điểm quan trọng của cú pháp để làm nổi bật
Thông tin Kiểm tra này ra…Đọc thêm Đọc thêm Đọc thêm Đọc thêm Đọc thêm Đọc thêm Đọc thêm |