Lặp qua một danh sách là nhiệm vụ mà bạn thường xuyên phải làm khi lập trình trên các ngôn ngữ nói chung và Python nói riêng. Do đó, hãy đảm bảo rằng bạn đang thực hiện nó theo cách tốt nhất có thể.
Python là một trong những ngôn ngữ lập trình có tốc độ phát triển nhanh nhất. Các lập trình viên sử dụng nó cho machine learning, khoa học dữ liệu và một loạt lĩnh vực khác. Trước khi bắt đầu học các khía cạnh nâng cao hơn của ngôn ngữ này, bạn nên nắm vững một trong những cấu trúc dữ liệu phổ biến nhất đó chính là danh sách.
Danh sách trong Python là mảng, rất quen thuộc với cả những ngôn ngữ lập trình khác như C và C++. Bạn có thể thay đổi kích thước của danh sách và để thuận tiện Python có sẵn một số phương thức khác nhau dành cho danh sách. Bạn có thể lưu trữ nhiều kiểu dữ liệu trong một danh sách, chẳng hạn như chuỗi, đối tượng và thậm chí là danh sách khác.
Tại sao bạn cần biết các kỹ thuật lặp khác nhau?
Có thể bạn sẽ đặt ra câu hỏi rằng chỉ cần một vòng lặp for đơn giản là đã có thể duyệt qua một danh sách trên Python rồi, việc gì cần phải biết các cách khác làm gì?
Thường thì việc sử dụng các phương pháp rút gọn, chẳng hạn như list comprehension hoặc hàm lambda sẽ giúp code của bạn ngắn gọn hơn và ít lộn xộn hơn. Ngoài ra, với một danh sách phức tạp có nhiều phần tử thì thường bạn sẽ phải thử để tìm ra cách duyệt hiệu quả nhất.
Quan trọng hơn, khi bạn đi xin việc ở vị trí lập trình viên, nhà tuyển dụng có thể hỏi những câu phức tạp về duyệt danh sách. Do đó, nếu bạn biết các cách duyệt danh sách khác nhau, bạn sẽ có thể trả lời những câu hỏi đó dễ dàng hơn.
Cách 1: Duyệt bằng cách sử dụng vòng lặp For và phương thức Range
Giống như các ngôn ngữ lập trình khác, sử dụng vòng lặp for là phương pháp phổ biến nhất để duyệt qua danh sách trong Python.
arr = [10, 20, 30, 40]
for val in arr:
print('value', val)
Ngoài ra, bạn cũng có thể sử dụng phương thức range() để có nhiều quyền kiểm soát hơn với vòng lặp for của mình. Phương thức range() nhận ba đối số:
- start: Biểu thị chỉ số bắt đầu của quá trình duyệt vòng lặp for.
- stop: Cho chương trình biết chỉ mục cuối cùng/dừng cho quá trình duyệt vòng lặp for. Người ta thường dùng độ dài của danh sách (số phần tử) làm chỉ mục dừng.
- step: Đối số kích thước step là tùy chọn. Nếu được cung cấp, nó sẽ đặt số lượng vòng lặp for tăng bộ đếm đang chạy của nó mỗi lần. Theo mặc định, kích thước step là 1.
Duyệt qua danh sách Python bằng phương thức range():
arr = [10, 20, 30, 40, 50, 60]
for key in range(0, len(arr), 2):
print('num', key)
Ví dụ trên chạy vòng lặp for từ chỉ số 0 cho đến khi hết độ dài của mảng và tăng bộ đếm vòng lặp lên 2.
Cách 2: Duyệt rút gọn bằng List comprehension
Một trong những tính năng trực quan nhất của Python chính là list comprehension. Nó cho phép bạn viết các giải pháp đơn giản, một dòng cho nhiều vấn đề khác nhau.
Ví dụ: Để tính bình phương của 10 số đầu tiên, bạn chỉ cần viết dòng code:
sq = [x ** 2 for x in range(10)]
Cho một danh sách các số, bạn có thể in chúng ra bằng list comprehension như sau:
arr = [1, 3, 5, 7, 9]
[print(val) for val in arr]
Một khi đã thông thạo, list comprehension là một công cụ cực kỳ mạnh mẽ và có thể giúp việc viết code trở nên đơn giản hơn rất nhiều.
Cách 3: Sử dụng hàm lambda nội dòng
Thông thường, chúng ta khai báo các hàm trong Python bằng cách sử dụng từ khóa def và phải cung cấp phần thân và tiêu đều của hàm. Các hàm lambda là một tính năng mạnh mẽ khác của Python với khả năng giúp cho việc viết code trở nên đơn giản, ngắn gọn và dễ dàng hơn. Chúng không có tên và chỉ có thể chứa một biểu thức duy nhất. Tuy nhiên, bạn có thể đưa bất kỳ số lượng tham số nào vào một hàm lambda.
Khi kết hợp với phương thức map(), hàm lambda có thể hoạt động hiệu quả như một vòng lặp for. Để in danh sách các số bằng cách sử dụng kết hợp các hàm lambda và map() bạn viết code như sau:
arr = [1, 3, 4, 5, 6, 7, 8]
myFun = list(map(lambda z:z, arr))
print(myFun)
Vòng lặp rất cần thiết trong mọi ngôn ngữ lập trình và Python cũng không ngoại lệ. Hầu hết các chương trình bạn viết đều sẽ có một hoặc nhiều vòng lặp, không ở chỗ này thì ở chỗ khác, không ở dạng này thì ở dạng khác.
Quản Trị Mạng hy vọng rằng bài viết này sẽ có ích đối với bạn!