CÔNG CỤ
MODULES
THAM KHẢO
Cách chia List thành các phần bằng nhau trong Python Cách xóa một khóa (key) ra khỏi dictionary trong Python Hướng dẫn chuyển đổi file Google Colab sang Markdown trong Python Bài tập Python: Lập trình cơ sở dữ liệu trong Python Kết nối cơ sở dữ liệu MySQL Python Hướng dẫn kết nối Python PostgreSQL bằng Psycopg2 Hướng dẫn kết nối SQLite sử dụng sqlite3 trong Python Bài tập Python : Pandas trong Python Phạm vi số float của Python Cách lên lịch chạy script Python bằng GitHub Actions Cách tạo hằng số trong Python Các nền tảng lưu trữ tốt nhất cho ứng dụng và script Python 6 Tip viết vòng lặp For hiệu quả hơn trong Python Cách đảo ngược Chuỗi String trong Python Cách gỡ lỗi ứng dụng Python trong Docker Container bằng VS Code 10 tip One Liner bạn cần biết trong Python Cách áp dụng ngưỡng hình ảnh trong Python với NumPy Tìm hiểu về các phép toán Groupby trong Pandas Lập trình Socket trong Python Mô-đun base64 trong Python Cách giới hạn float values trong Python Tìm hiểu Mô-đun statistics Trong Python File Organizing trong Python Đổi tên File trong Python Tìm hiểu về Deque trong Python Mô-đun Calendar trong Python Tìm hiểu về Enum trong Python Sử dụng pprint trong Python Làm việc với cấu trúc Dữ liệu Stack trong Python Thư viện functools trong Python Tip sử dụng hàm round() với tham số âm trong Python Hàm print có thể nhận thêm các tham số bổ sung trong Python Tip tìm chuỗi dài nhất bằng hàm max() trong Python Cách lặp qua nhiều list với hàm zip() trong Python Tìm hiểu về MLOps trong Python Docker và Kubernetes với MLOps trong Python Kết hợp DevOps với MLOps trong Python Xử lý độ chính xác các hàm floor, ceil, round, trunc, format trong Python tối ưu quy trình MLOps Với Python Sự khác biệt giữa byte objects và string trong Python Top 4 thư viện phổ biến nhất của NLP trong Python Cách sử dụng ThreadPoolExecutor trong Python Phân tích dữ liệu Blockchain với Python Hướng dẫn triển khai Smart Contracts với Python Blockchain APIs với Python Làm việc với file ZIP trong Python Sự khác biệt giữa toán tử == và is trong Python Chuyển đổi kiểu dữ liệu trong Python Cách làm việc với file tarball/tar trong Python Sự khác biệt giữa iterator và iterable trong Python Sự khác biệt giữa set() và frozenset() trong Python Làm việc với các biến môi trường trong Python Một tác vụ phổ biến khi làm việc với danh sách trong Python Định dạng chuỗi Strings trong Python Sử dụng Poetry để quản lý dependencies trong Python Sự khác biệt giữa sort() và sorted() trong Python Từ khóa yield trong Python Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass Cách truy cập và thiết lập biến môi trường trong Python Hướng dẫn toàn diện về module datetime trong Python Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python Sử dụng Virtual Environment trong Python Từ khóa super() trong Python Số phức trong Python Ý nghĩa của một hoặc hai dấu gạch dưới đứng đầu trong Python Làm việc với Video trong OpenCV bằng Python Chỉnh sửa file trực tiếp bằng module fileinput trong Python Hướng dẫn cách chuyển đổi kiểu dữ liệu trong Python Làm việc với hình ảnh trong OpenCV sử dụng Python Metaclasses trong Python Cách chọn ngẫu nhiên một phần tử từ danh sách trong Python Hướng dẫn cài đặt và sử dụng OpenCV trong Python Phạm vi toàn cục, cục bộ và không cục bộ trong Python Tìm hiểu về từ khóa self trong các lớp Python Hướng dẫn sử dụng Rich, Typer, và SQLite trên terminal bằng Python Giới thiệu về Graph Machine Learning trong Python Cách kiểm tra một đối tượng có thể lặp (iterable) trong Python Quản lý sinh viên Python & MySQL Cách cắt (slicing) chuỗi trong Python Cách loại bỏ phần tử trùng lặp khỏi danh sách (List) trong Python Phân tích dữ liệu Apple Health bằng Python Cách làm phẳng danh sách lồng nhau trong Python Tìm hiểu về *args và **kwargs trong Python Cách xóa file và thư mục trong Python 31 Phương thức xử lý chuỗi (String) quan trọng trong Python Cách sao chép file trong Python 8 Mẹo Refactor Code Python nhanh gọn (Phần 2) Cách yêu cầu người dùng nhập liệu đến khi nhận được phản hồi hợp lệ trong Python Làm chủ Pattern Matching trong Python 3.10 Tạo app ghi chú trong Python với nhận dạng giọng nói và API Notion Các tính năng mới trong Python 3.10 5 lỗi thường gặp trong Python Sự khác biệt giữa append() và extend() trong list Python Các cách nối hai danh sách trong Python Sự khác biệt giữa str và repr trong Python Sự khác biệt giữa @classmethod, @staticmethod và instance methods trong Python Cách thêm số 0 vào đầu chuỗi trong Python Cách tạo thư mục lồng nhau (nested directory) trong Python Cách hợp nhất hai Dictionaries trong Python Cách thực thi lệnh hệ thống hoặc System Command từ Python Cách kiểm tra một chuỗi có chứa chuỗi con trong Python Cách tìm chỉ mục của một phần tử trong danh sách (List) trong Python Cách truy cập index trong vòng lặp for trong Python Cách kiểm tra file hoặc thư mục có tồn tại trong Python Cách xóa phần tử trong danh sách Python Ý nghĩa của if __name__ == "__main__" trong Python 8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic Hỗ trợ Async trong Django 3.1 Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit Cách sử dụng Python Debugger với hàm breakpoint() Cách sử dụng chế độ interactive trong Python Hướng dẫn viết game Rắn Săn Mồi bằng Python 11 mẹo và thủ thuật để viết Code Python hiệu quả hơn Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python Hướng dẫn tạo Chatbot đơn giản bằng PyTorch Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python Xây dựng web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API Hướng dẫn sử dụng Google Sheets API với Python Cách nạp dữ liệu Machine Learning từ File trong Python Toán tử Walrus Operator- Tính năng mới trong Python 3.8 Cách thêm Progress Bar trong Python với chỉ một dòng Code
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Biểu thức Generator trong Python

Trong bài viết này, bạn sẽ học về biểu thức generator trong Python, một cách tiếp cận mạnh mẽ và hiệu quả để tạo ra các đối tượng generator. Biểu thức generator giúp bạn viết mã ngắn gọn, dễ đọc và tiết kiệm bộ nhớ hơn so với các phương pháp truyền thống như list comprehension. Hãy cùng tìm hiểu cách sử dụng biểu thức generator để cải thiện hiệu suất và tính linh hoạt trong các chương trình Python của bạn.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Giới thiệu về biểu thức generator trong Python

Biểu thức generator là một biểu thức trả về một đối tượng generator.

Về cơ bản, một hàm generator là một hàm chứa câu lệnh yield và trả về một đối tượng generator.

Ví dụ, hàm sau đây định nghĩa một hàm generator:

Bài viết này được đăng tại [free tuts .net]

def squares(length):
    for n in range(length):
        yield n ** 2

Hàm generator squares trả về một đối tượng generator sản sinh ra các số bình phương của các số nguyên từ 0 đến length - 1.

Bởi vì một đối tượng generator là một iterator, bạn có thể sử dụng vòng lặp for để lặp qua các phần tử của nó:

for square in squares(5):
    print(square)

Kết quả:

0
1
4
9
16

Một biểu thức generator cung cấp cho bạn một cách đơn giản hơn để trả về một đối tượng generator.

Ví dụ sau đây định nghĩa một biểu thức generator trả về các số bình phương của các số nguyên từ 0 đến 4:

squares = (n ** 2 for n in range(5))

squares là một đối tượng generator, bạn có thể lặp qua các phần tử của nó như sau:

for square in squares:
    print(square)

Như bạn thấy, thay vì sử dụng một hàm để định nghĩa một hàm generator, bạn có thể sử dụng một biểu thức generator.

Biểu thức generator giống như list comprehension về cú pháp. Ví dụ, một biểu thức generator cũng hỗ trợ các cú pháp phức tạp bao gồm:

  • Câu lệnh if
  • Vòng lặp lồng nhau
  • Comprehensions lồng nhau

Tuy nhiên, một biểu thức generator sử dụng dấu ngoặc tròn () thay vì dấu ngoặc vuông [].

Biểu thức generator vs list comprehension trong Python

Dưới đây là cách sử dụng list comprehension để tạo ra các số bình phương từ 0 đến 4:

square_list = [n ** 2 for n in range(5)]

Và đây là cách định nghĩa một generator số bình phương:

square_generator = (n ** 2 for n in range(5))

Cú pháp

Về cú pháp, biểu thức generator sử dụng dấu ngoặc tròn () trong khi list comprehension sử dụng dấu ngoặc vuông [].

Sử dụng bộ nhớ

List comprehension trả về một danh sách trong khi biểu thức generator trả về một đối tượng generator.

Điều này có nghĩa là list comprehension trả về một danh sách đầy đủ các phần tử ngay lập tức. Tuy nhiên, biểu thức generator trả về các phần tử lần lượt, khi được yêu cầu.

List comprehension hoạt động theo cơ chế eager (háo hức) trong khi biểu thức generator hoạt động theo cơ chế lazy (lười biếng).

Nói cách khác, list comprehension tạo ra tất cả các phần tử ngay lập tức và tải tất cả vào bộ nhớ.

Ngược lại, biểu thức generator tạo ra từng phần tử một khi được yêu cầu và chỉ tải một phần tử duy nhất vào bộ nhớ.

Iterable vs iterator

List comprehension trả về một iterable. Điều này có nghĩa là bạn có thể lặp qua kết quả của list comprehension nhiều lần.

Tuy nhiên, biểu thức generator trả về một iterator, cụ thể là một lazy iterator. Nó sẽ trở nên cạn kiệt khi bạn lặp qua hết các phần tử của nó.

Kết bài

Sử dụng biểu thức generator trong Python là một cách hiệu quả và tiện lợi để tạo ra các generator. Biểu thức này không chỉ giúp tiết kiệm bộ nhớ mà còn làm cho mã nguồn trở nên ngắn gọn và dễ đọc hơn. Bằng cách sử dụng biểu thức generator, bạn có thể tạo ra các dãy số và xử lý chúng theo cách "lười biếng", tức là chỉ tính toán giá trị khi cần thiết. Điều này đặc biệt hữu ích khi làm việc với các dãy số lớn hoặc vô hạn. Hãy áp dụng biểu thức generator vào các dự án của bạn để tận dụng tối đa lợi ích mà chúng mang lại.

Cùng chuyên mục:

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Cách nạp dữ liệu Machine Learning từ File trong Python

Cách nạp dữ liệu Machine Learning từ File trong Python

Hướng dẫn sử dụng Google Sheets API với Python

Hướng dẫn sử dụng Google Sheets API với Python

Xây dựng  web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn viết Snake Game bằng Python

Hướng dẫn viết Snake Game bằng Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng Python Debugger với hàm breakpoint()

Cách sử dụng Python Debugger với hàm breakpoint()

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hỗ trợ Async trong Django 3.1

Hỗ trợ Async trong Django 3.1

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

Ý nghĩa của if __name__ ==

Ý nghĩa của if __name__ == "__main__" trong Python

Cách xóa phần tử trong danh sách Python

Cách xóa phần tử trong danh sách Python

Top