Bạn đã có các trình vòng lặp nhầm lẫn với máy phát điện.
Ví dụ đầu tiên của bạn là một biểu thức lặp danh sách trong khi thứ hai là biểu thức trình tạo. Sự khác biệt chính là trình tạo tạo ra từng thành viên của bộ sưu tập đã cho một cách lười biếng (khi cần) chứ không phải háo hức (cùng một lúc, dù cần hay không). Bạn có thể xác định máy phát điện của riêng bạn bằng cách sử dụng năng suất hơn là trả lại.
Theo như cách sử dụng, bạn muốn có một trình vòng lặp khi bạn cần danh sách (hoặc từ điển hoặc bất cứ thứ gì) cho một cái gì đó trong chính nó. Bạn sẽ sử dụng một trình tạo khi bộ sưu tập là ngẫu nhiên cho sản phẩm cuối cùng. Ví dụ: bạn có thể sử dụng trình tạo để lấy danh sách các số thỏa mãn một số tiêu chí từ một số tiêu chí khác. Bạn không quan tâm đến danh sách ban đầu, chỉ những thành viên phù hợp với tiêu chí. Vì vậy, bạn sử dụng một trình tạo để chỉ nhận được những con số đó.
Một ví dụ cụ thể hơn sẽ là tìm các góc của các hình tam giác có các cạnh có độ dài cho trước. Chúng tôi không muốn tất cả các tam giác thất bại, bị biến dạng, chỉ có các tam giác thành công mạnh mẽ, khỏe mạnh. Vì vậy, chúng tôi sẽ sử dụng một máy phát điện.
Bài viết Stack Overflow này đi vào chi tiết hơn.