tôi có thể sử dụng if
và for
trong danh sách comprehensions/biểu thức máy phát điện nhưSử dụng trong khi trong danh sách hiểu hoặc tạo ra cụm từ
list(i for i in range(100) if i*i < 30)
Tôi biết điều này là không hiệu quả nhất nhưng chịu với tôi như tình trạng này có thể là nhiều hơn nữa phức tạp và đây chỉ là một ví dụ. Tuy nhiên, đây vẫn đi qua trăm lần lặp và chỉ mang lại một giá trị trong 6. đầu tiên Có cách nào để nói với các biểu hiện phát nơi để dừng lại với một cái gì đó như thế này:
list(i for i in range(100) while i*i < 30)
Tuy nhiên, while
không hiểu máy phát điện biểu thức. Vì vậy, câu hỏi của tôi là, làm thế nào để tôi viết một biểu thức máy phát điện với một điều kiện dừng để nó không tiếp tục tính toán, ngay cả khi nó không mang lại giá trị mới.
Chỉ cần lưu ý: bạn có thể tạo danh sách trực tiếp bằng cách sử dụng '[i cho i trong phạm vi (100)]' – Joril
Thật kỳ lạ, đã có [PEP3142] (https://www.python.org/dev/peps/ pep-3142 /) mở tại thời điểm câu hỏi này được hỏi. Các trường hợp sử dụng được đưa ra là gần như chính xác này. Guido nuked nó tháng năm, 2013 –