Sau đây là 8 thủ thuật Pyton được các chuyên gia ưa dùng mà bạn có thể áp dụng để giúp mã Python của mình ngắn gọn và hiệu quả hơn.
1. Sắp xếp các đối tượng theo các key đa dạng
Giả sử chúng ta muốn sắp xếp danh sách dictionary sau đây:
Trong trường hợp không chỉ muốn sắp xếp nó theo tên hoặc tuổi mà muốn sắp xếp nó theo cả hai lĩnh vực. Trong SQL, đây sẽ là một truy vấn như sau:
Python có một giải pháp rất đơn giản để đảm bảo rằng các hàm sắp xếp theo một thứ tự ổn định, các items bằng nhau và giữ lại thứ tự ban đầu của chúng. Để sắp xếp theo tên và tuổi, chúng ta có thể làm điều này:
Hãy chú ý cách đảo ngược thứ tự. Đầu tiên, chúng ta sẽ sắp xếp theo độ tuổi, sau đó là theo tên. Với operator.itemgetter(), chúng ta sẽ có được các mục tuổi và tên từ mỗi từ điển trong danh sách một cách ngắn gọn. Kết quả như sau:
Theo cách này, tên sẽ được ưu tiên sắp xếp trước, sau đó sẽ đến tuổi nếu tên giống nhau. Nhờ vậy, “John” được gom vào thành nhóm và sẽ sắp xếp theo tuổi.
2. Danh sách bao quát
Một danh sách bao quát có thể thay thế cho những loop dùng để điền vào danh sách. Cú pháp cơ bản cho danh sách bao quát là:
Một ví dụ cơ bản về điền vào danh sách với một chuỗi các số:
Ngoài việc có thể sử dụng một biểu thức, bạn cũng có thể thực hiện một số phép toán:
Bởi vì bạn có thể sử dụng một biểu thức, bạn cũng có thể thực hiện một số phép toán:
Hoặc có thể gọi một chức năng bên ngoài:
Cuối cùng, bạn có thể sử dụng "if" để lọc danh sách. Trong trường hợp này, chúng tôi chỉ giữ các giá trị được chia cho 2:
3. Kiểm tra bộ nhớ sử dụng của các đối tượng
Bạn có thể kiểm tra mức sử dụng bộ nhớ của một đối tượng bằng sys.getsizeof () :
Range function chỉ trả về một class hoạt động như một danh sách. Một miền giá trị có hiệu quả bộ nhớ cao hơn nhiều so với việc sử dụng danh sách số thực tế.
Bằng cách sử dụng một danh sách bao quát để tạo một danh sách thực tế các số từ cùng một phạm vi:
Nhờ sys.getsizeof(), bạn có thể tìm hiểu thêm về Python và việc sử dụng bộ nhớ.
4. Data classes
Từ phiên bản 3.7, Python cung cấp data classes. Có một số lợi thế so với các class thông thường hoặc các lựa chọn thay thế khác như trả về nhiều giá trị hoặc dictionaries:
- Một data class yêu cầu một lượng code tối thiểu
- So sánh các lớp dữ liệu vì __eq__ được triển khai
- In một data class để gỡ lỗi vì __repr__ cũng được triển khai
- Data classes yêu cầu gợi ý, giảm khả năng lỗi
Một ví dụ về data class:
5. The Attrs Package
Thay vì data classes, bạn có thể sử dụng attrs. Có hai lý do để chọn attrs:
- Bạn đang sử dụng phiên bản Python cũ hơn 3.7
- Bạn muốn nhiều tính năng hơn
Gói attrs hỗ trợ tất cả các phiên bản Python chính, bao gồm CPython 2.7 và PyPy. Một số attrs bổ sung được cung cấp trên các data class thông thường là trình xác nhận và trình chuyển đổi. Ví dụ:
Trên thực tế, các tác giả của attrs đã làm việc trên PEP để giới thiệu các lớp dữ liệu. Các data class được đơn giản hơn (dễ hiểu hơn), trong khi attrs cung cấp đầy đủ các tính năng bạn có thể muốn!
6. Hợp nhất các dictionary (Python 3.5+)
Từ phiên bản Python 3.5 đã dễ dàng hơn để hợp nhất dictionaries:
Trong trường hợp nếu các key bị chồng chéo, các key từ dictionary đầu tiên sẽ bị viết trồng lên nhau.
Trong Python 3.9, hợp nhất các dictionary trở nên gọn gàng hơn và có thể được viết lại thành:
7. Tìm giá trị thường xuyên nhất
Để tìm giá trị xảy ra thường xuyên nhất trong danh sách hoặc chuỗi:
- max () sẽ trả về giá trị cao nhất trong danh sách. Key argument có một hàm đối số duy nhất để tùy chỉnh thứ tự sắp xếp là test.count. Hàm được áp dụng cho từng mục trên iterable.
- test.count là một chức năng tích hợp của danh sách. Nó nhận một đối số và sẽ đếm số lần xuất hiện cho đối số đó. Vì vậy, test.count (1) sẽ trả về 2 và test.count (4) trả về 4.
- Set (test) trả về tất cả các giá trị duy nhất từ test {1, 2, 3, 4}
Vì vậy, trong dòng mã đơn này lấy tất cả các giá trị thử nghiệm duy nhất, là {1, 2, 3, 4}. Tiếp theo, max sẽ áp dụng hàm list.count cho chúng và trả về giá trị tối đa.
Cập nhật, một số bình luận đã chỉ ra một cách hiệu quả hơn để làm điều này:
8. Trả về nhiều giá trị
Các hàm trong Python có thể trả về nhiều hơn một biến mà không cần dictionary, list hoặc data class. Nó hoạt động như thế này:
Điều này là ổn đối với một số lượng hạn chế của các giá trị trả về. Nhưng nếu vượt qua 3 giá trị thì nên được đưa vào.
Nguồn: tổng hợp
Hình ảnh: tổng hợp
Có thể bạn quan tâm: 5 KỸ THUẬT” KHẮC CỐT GHI TÂM” CỦA DÂN IT VỀ PYTHON
-------------------------------
JT1 - IT Recruitment Agency
Website: https://www.jt1.vn
Email: hi@jt1.vn
Điện thoại: +8428 6675 6685
Xem thêm các bài viết khác tại: https://www.jt1.vn/blog
Theo dõi chúng tôi tại: https://www.facebook.com/jt1asia/
Comments