Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
11 mẹo và thủ thuật để viết Code Python hiệu quả hơn
Python là một ngôn ngữ lập trình mạnh mẽ và linh hoạt, được sử dụng rộng rãi trong nhiều lĩnh vực như phát triển phần mềm, phân tích dữ liệu, trí tuệ nhân tạo và nhiều hơn nữa. Tuy nhiên, không phải ai cũng biết cách tận dụng tối đa các tính năng của Python để viết mã hiệu quả, dễ bảo trì và đúng phong cách "Pythonic."
Bài viết này sẽ cung cấp cho bạn 11 mẹo và thủ thuật đơn giản nhưng hữu ích, giúp bạn nâng cấp kỹ năng viết code của mình. Từ việc tối ưu hóa vòng lặp, xử lý danh sách thông minh, đến cách quản lý bộ nhớ hiệu quả, các mẹo này sẽ mang lại sự khác biệt lớn trong cách bạn lập trình với Python. Hãy cùng tìm hiểu và áp dụng vào thực tiễn!
1. Sử dụng enumerate()
thay vì range(len())
trong Python
Khi bạn muốn duyệt qua một danh sách và cần cả chỉ số lẫn giá trị hiện tại, nhiều người hay sử dụng cú pháp range(len())
. Tuy nhiên, cách này cồng kềnh hơn so với việc sử dụng hàm enumerate()
.
Ví dụ: ta cần kiểm tra danh sách các số, nếu số nào âm thì chuyển giá trị đó về 0:
Bài viết này được đăng tại [free tuts .net]
# Cách cũ (không tối ưu): data = [1, 2, -3, -4] for i in range(len(data)): if data[i] < 0: data[i] = 0 # Cách tốt hơn: data = [1, 2, -3, -4] for idx, num in enumerate(data): if num < 0: data[idx] = 0
2. Dùng List Comprehension thay vì vòng lặp for thông thường trong Python
Khi tạo danh sách từ các giá trị tính toán, bạn có thể dùng List Comprehension để rút gọn code. Ví dụ: tạo danh sách chứa bình phương các số từ 0 đến 9:
# Cách cũ: squares = [] for i in range(10): squares.append(i * i) # Cách tốt hơn: squares = [i * i for i in range(10)]
Lưu ý:
Không nên lạm dụng List Comprehension nếu chúng làm code khó đọc.
3. Sắp xếp cấu trúc phức tạp bằng hàm sorted()
trong Python
Hàm sorted()
có thể sắp xếp các iterable (list, tuple, dictionary, v.v.) theo thứ tự tăng dần. Để sắp xếp giảm dần, thêm tham số reverse=True
.
Ví dụ:
data = (3, 5, 1, 10, 9) sorted_data = sorted(data, reverse=True) # [10, 9, 5, 3, 1]
Với các iterable phức tạp như danh sách chứa dictionary, bạn có thể sắp xếp dựa vào key cụ thể:
data = [ {"name": "Max", "age": 6}, {"name": "Lisa", "age": 20}, {"name": "Ben", "age": 9} ] sorted_data = sorted(data, key=lambda x: x["age"]) # [{'name': 'Max', 'age': 6}, {'name': 'Ben', 'age': 9}, {'name': 'Lisa', 'age': 20}]
4. Lưu trữ giá trị duy nhất bằng Set trong Python
Khi cần loại bỏ các phần tử trùng lặp trong danh sách, bạn có thể chuyển nó thành Set.
my_list = [1, 2, 3, 4, 5, 6, 7, 7, 7] my_set = set(my_list) # {1, 2, 3, 4, 5, 6, 7}
Set cũng hỗ trợ các thao tác tập hợp như giao, hợp, hiệu.
5. Tiết kiệm bộ nhớ bằng Generator trong Python
Thay vì List Comprehension, bạn có thể sử dụng Generator Comprehension để tính toán phần tử theo yêu cầu (lazy evaluation), giúp tiết kiệm bộ nhớ:
import sys my_list = [i for i in range(10000)] print(sys.getsizeof(my_list), "bytes") # 87616 bytes my_gen = (i for i in range(10000)) print(sys.getsizeof(my_gen), "bytes") # 128 bytes